Shell

时间:2015-10-11 17:51:38

标签: shell sed csh tcsh

我有一个字符串处理要求,我想从行号n取一行并编辑它(将@ 2替换为@ 3)然后将新编辑的字符串插入行号n + 1

这是我的输入文件的样子

输入文件: -

x/a   y/a   z/a
x/a@2 y/a@2 z/a@2
x/b   y/b   z/b
x/b@2 y/b@2 z/b@2

预期产量如下。注意第三行@ 3。这就是我所期待的。

x/a   y/a   z/a
x/a@2 y/a@2 z/a@2
x/a@3 y/a@3 z/a@3
x/b   y/b   z/b
x/b@2 y/b@2 z/b@2

我尝试过: - 我对sed有基本的了解。所以我能够使用以下方法搜索和替换字符串:

sed '/a@2/  s/a@2/a@3/' -i $file

但是我无法找到一种方法将它插入拾取它的下一行。

任何帮助将不胜感激。 TIA

1 个答案:

答案 0 :(得分:1)

在编辑之前,您只需打印要编辑的行:

sed '/a@2/{ p; s/a@2/a@3/g; }'