我想在一个新行一个文件来替换两行:
foo1.txt
aaa aaa
bbb bbb
ccc ccc
ddd ddd
bbb bbb
ddd ddd
后替换文件应该是这样的
foo1.txt
aaa aaa
eee eee
ddd ddd
bbb bbb
ddd ddd
是否有与SED的方式或其他一些命令将这个替换文件夹中的所有文件
我一直在试图与SED但没有成功: sed 's/bbb\tbbb\nccc\tccc/eee\teee/g' foo*.txt
即使这个问题应该已经回答了这一主题 ,我没能做出“1行的一个命令”解决方案的工作。
这条命令:
perl -pe 's/START.*STOP/replace_string/g' file_to_change
似乎没有为我工作,不执行多线代替。 我不得不把它在两个不同的Perl脚本分裂,就像这样:
perl -pe 's/bbb\tbbb\n.*/placeholderstring/g' foo1.txt | perl -pe 's/placeholderstring ccc\tccc/eee\teee/g'
试试,看看有什么最适合你。
编辑:
随着新的样本文本,唯一可行的解决方案是一个由威廉Pursell
sed '/bbb\tbbb/{ N; s/.*ccc\tccc/ eee\teee/; }' foo1.txt
有很多的方法来解释你的问题。 如果你想在一个固定的位置,以取代线,如线2和3,这样做:
sed '2d; 3s/.*/newtext/'
如果您想更换匹配的线和下面的一行:
sed '/pattern/{ N; s/.*/newtext/; }'
要替换在该第二行的图案相匹配的连续两行:
sed -n '$p; N; /pattern/d; P; D'
nawk '{if($0~/bbb.*bbb/){getline;getline;print "newline"};print}' your_file
下面的测试:
> cat temp
aaa aaa
bbb bbb
ccc ccc
ddd ddd
> nawk '{if($0~/bbb.*bbb/){getline;getline;print "newline"};print}' temp
aaa aaa
newline
ddd ddd