0

grep コマンドから返された 3 行をファイルの 2 行目に追加する必要があります。以下は多少機能していますが、ファイルに行を追加するためにsedを取得するのは面倒です。どんな助けでも大歓迎です。

TARGET=$(cat $EPH_DIR | grep -A2 "^$SAT")

戻り値:

O3B_M001    
1 00001U 001001   13134.54166667  .00000000  00000+0  00000+0 0 00018    
2     1   0.0399 359.0429 0028976 145.2061 239.3456  5.02804648    06

これらの行をファイルに追加する必要があります...これはありますが、実際には機能しません。

sed -i "2i/^/<"$TARGET"/" "$BASE_DIR/$FILENAME"

私は何を間違っていますか?

4

2 に答える 2

2

awk の方が簡単です:

awk -v t="$TARGET" 'NR==2{print t}1' file
于 2013-05-23T23:18:50.730 に答える
0
TARGET=$(cat "$EPH_DIR" | grep -A2 "^$SAT" | sed -e 's/$/\\/' -e '$s/\\$//')
sed -i "2i\\
$TARGET
" "$BASE_DIR/$FILENAME"

行内のsedコマンドは、$(...)最後の行を除く各行の末尾にバックスラッシュを追加します (または、より正確には、各行の末尾にバックスラッシュを追加してから、最後の行の末尾にあるバックスラッシュを削除します)。メインsedコマンドは、 2 行目の前の値に2iマテリアルを挿入するために使用します (2 行目の後に配置するために使用します)。$TARGET2a

テスト済み。

于 2013-05-23T23:19:24.910 に答える