Tex*_*xGC 1 sed awk text-processing
我有一个这样的文件:
File1:
json ABC
optype D
json XYZ
json IJK
--DELETE OP_TYPE
json IJK
Run Code Online (Sandbox Code Playgroud)
如果上面任何地方都有模式 optype,我想取消注释以 DELETE 开头的行。
期望的输出:
json ABC
optype D
json XYZ
json IJK
DELETE OP_TYPE
json IJK
Run Code Online (Sandbox Code Playgroud)
如果文件没有上面的模式 optype,则不需要修改。
File2:
json ABC
json XYZ
json IJK
--DELETE OP_TYPE
json IJK
Run Code Online (Sandbox Code Playgroud)
期望的输出:
json ABC
json XYZ
json IJK
--DELETE OP_TYPE
json IJK
Run Code Online (Sandbox Code Playgroud)
如何通过awk
or来实现这一点sed
?
和sed
:
sed '/optype/,$ s/^--\(DELETE\)/\1/'
Run Code Online (Sandbox Code Playgroud)
s
它在从第一行匹配正则optype
表达式(即包含optype
)到最后一行( )的所有行上运行ubstitute 命令$
。
请注意,如果存在类似的行,--DELETE optype
它将被视为范围的开始并且不会被注释。
等价perl
的:
perl -pe 's/^--(?=DELETE)// if /optype/..0'
Run Code Online (Sandbox Code Playgroud)
或者awk
:
awk '/optype/, 0 {sub("^--DELETE", "DELETE")}; {print}'
Run Code Online (Sandbox Code Playgroud)