使用sed将grep的结果添加到文件的第2行

时间:2013-05-23 23:11:10

标签: linux bash sed grep

我需要将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"

我做错了什么?

2 个答案:

答案 0 :(得分:2)

awk更容易:

awk -v t="$TARGET" 'NR==2{print t}1' file

答案 1 :(得分:0)

TARGET=$(cat "$EPH_DIR" | grep -A2 "^$SAT" | sed -e 's/$/\\/' -e '$s/\\$//')
sed -i "2i\\
$TARGET
" "$BASE_DIR/$FILENAME"

sed行中的$(...)命令在除最后一行之外的每一行的末尾添加一个反斜杠(或者更确切地说,在每行的末尾添加一个反斜杠,然后删除反斜杠最后一行的结尾)。主sed命令使用2i在第2行之前的$TARGET值中插入素材(使用2a将其放在第2行之后)。

测试。