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 回答