Sed 使用BASH脚本,如何根据模式更改行?
我有一个文件需要处理Sed 使用BASH脚本,如何根据模式更改行?,sed,design-patterns,lines,Sed,Design Patterns,Lines,我有一个文件需要处理 ##PAT1## #xxxdx #ddddvdvc ##PAT2## #dsfcdsfd #dsfwf 如果我传递了一个模式,我想删除前导的#字符。因此,如果我通过了######,我想从接下来的两行中删除#(直到下一个模式)-始终在模式后两行。我尝试了sed,但没有成功 感谢使用GNU版本的sed单向: 填充的内容: "##PAT1##" "#xxxdx" "#ddddvdvc" "##PAT2##" "#dsfcdsfd" "#dsfwf" 命令: sed '/^"#
##PAT1##
#xxxdx
#ddddvdvc
##PAT2##
#dsfcdsfd
#dsfwf
如果我传递了一个模式,我想删除前导的#
字符。因此,如果我通过了######
,我想从接下来的两行中删除#
(直到下一个模式)-始终在模式后两行。我尝试了sed
,但没有成功
感谢使用GNU版本的sed单向:
填充的内容
:
"##PAT1##"
"#xxxdx"
"#ddddvdvc"
"##PAT2##"
"#dsfcdsfd"
"#dsfwf"
命令:
sed '/^"##PAT1##"/,+2 s/^\("\)#\([^#]\)/\1\2/' infile
输出:
"##PAT1##"
"xxxdx"
"ddddvdvc"
"##PAT2##"
"#dsfcdsfd"
"#dsfwf"
这可能适合您:
sed '/^"##PAT1##/{$!N;$!N;s/#//5g}' file
"##PAT1##"
"xxxdx"
"ddddvdvc"
"##PAT2##"
"#dsfcdsfd"
"#dsfwf
请编辑上面的消息以显示您期望的输出。祝你好运。@tuner
$!N
表示如果当前行不是文件的最后一行,则将换行符和下一行追加到模式空间。