Awk 如何用前导空格替换sed中的多行字符串

Awk 如何用前导空格替换sed中的多行字符串,awk,sed,Awk,Sed,我有一个文件,上面有这样的行 something ----------- 在某物之后有一个前导和尾随空格。我想把它换成 other ------- 并保留前导和尾随空间。如何?sed可以使用逗号分隔的正则表达式集匹配多行。并用c命令替换范围内的所有内容。要使c命令不忽略前导空格,请在其后面使用反斜杠。e、 g sed -i.original '/^ something $/,/-----------$/c\ other \n-------' input-filename sed可以

我有一个文件,上面有这样的行

 something 
-----------
某物之后有一个前导和尾随空格。我想把它换成

 other 
-------

并保留前导和尾随空间。如何?

sed
可以使用逗号分隔的正则表达式集匹配多行。并用
c
命令替换范围内的所有内容。要使
c
命令不忽略前导空格,请在其后面使用反斜杠。e、 g

sed -i.original '/^ something $/,/-----------$/c\ other \n-------' input-filename

sed
可以使用逗号分隔的正则表达式集匹配多行。并用
c
命令替换范围内的所有内容。要使
c
命令不忽略前导空格,请在其后面使用反斜杠。e、 g

sed -i.original '/^ something $/,/-----------$/c\ other \n-------' input-filename
这可能适用于您(GNU-sed):

在开始标记和结束标记之间收集行,然后用替换字符串替换所需的字符串

注意:使用
M
标志在多行中进行精确匹配。

这可能适用于您(GNU-sed):

在开始标记和结束标记之间收集行,然后用替换字符串替换所需的字符串


注意:使用
M
标志在多行中进行精确匹配。

sed用于单个行上的简单替换,这就是全部内容,对于任何其他您应该使用awk的内容:

$ awk 'n{$0=substr($0,1,n); n=0} {sub(/^ something $/," other "); n=length()}1' file
 other
-------

这将适用于任何UNIX设备上任何shell中的任何awk。

sed用于在单个行上进行简单替换,这就是全部内容,对于其他任何您应该使用awk的内容:

$ awk 'n{$0=substr($0,1,n); n=0} {sub(/^ something $/," other "); n=length()}1' file
 other
-------
这将适用于任何UNIX机器上任何shell中的任何awk