我有一个像
这样的行的文件 something
-----------
something
之后的前导空格和尾随空格。我想用
other
-------
并保留前导和尾随空格。怎么样?
答案 0 :(得分:1)
这可能适合你(GNU sed):
sed -i '/^ something $/{:a;N;/^--*$/M!ba;s/something/other/}' file
收集开始和结束标记之间的行,然后用替代标记替换所需的字符串。
N.B。使用M
标志在多行内完全匹配。
答案 1 :(得分:1)
sed用于单独行的简单替换,全部,对于你应该使用awk的任何其他内容:
$ awk 'n{$0=substr($0,1,n); n=0} {sub(/^ something $/," other "); n=length()}1' file
other
-------
这适用于任何UNIX机器上任何shell中的任何awk。
答案 2 :(得分:0)
sed
可以使用逗号分隔的正则表达式匹配多行。并使用c
命令替换范围内的所有内容。要使c
命令不忽略前导空格,请在其后使用反斜杠。 e.g。
sed -i.original '/^ something $/,/-----------$/c\ other \n-------' input-filename