sed在文件中替换,直到模式匹配为止
我使用sed在文件中替换,直到模式匹配为止,sed,Sed,我使用sed对文件中的头进行简单替换。 有时需要更换,有时不需要。 它工作正常,但很长,因为它每次读取文件(数百MB)。 但是,有一种模式将标题与内容分开 遇到特定模式后,如何告诉sed停止处理文件 例如: blabla标题,我想在这里编辑,但可能不会在这里框架更多的内容 假设您想从标题中删除“want”,但单词可能在所述标题中,也可能不在所述标题中。我知道我想在第帧停止处理文件 sed-i'0,/\(pattern1\| pattern2\)/s//pattern1/'*#TODO在帧停止您可
sed
对文件中的头进行简单替换。
有时需要更换,有时不需要。
它工作正常,但很长,因为它每次读取文件(数百MB)。
但是,有一种模式将标题与内容分开
遇到特定模式后,如何告诉sed停止处理文件
例如:
blabla标题,我想在这里编辑,但可能不会在这里框架更多的内容
假设您想从标题中删除“want”,但单词可能在所述标题中,也可能不在所述标题中。我知道我想在第帧停止处理文件
sed-i'0,/\(pattern1\| pattern2\)/s//pattern1/'*#TODO在帧停止
您可以使用awk
awk '/pattern stop/ {f=1} !f {sub(/old data/,"new data")} 1' file
这将用“新数据”替换旧数据
,只要未找到模式停止
要将数据写回原始文件,请执行以下操作:
awk 'code' file > tmp && mv tmp file
您可以使用
q
命令退出sed处理其余输入
sed -i '0,/\(pattern1\|pattern2\)/s//pattern1/' * ; /FRAME/q'
模式匹配包含/FRAME/
的行,在该行上执行命令FRAME
q
FRAME
as
sed '0, /FRAME/ s/old/new'
第二种选择是否假定文件以空格开头?@nha No是地址范围。指定必须从行
0
执行操作,直到获得模式FRAME