说文件有
ABC DEF ,No
IMD DEF ,NO
ANC KOJD ,NO
ABC MSL ,NO
如何使用sed仅将,No
替换为XYZ,No
仅包含ABC
的行?
所以最后的输出是
ABC DEF XYZ ,No
IMD DEF ,NO
ANC KOJD ,NO
ABC MSL XYZ,NO
答案 0 :(得分:1)
使用:
sed -r '/ABC/s/(,N[oO])/XYZ\1/' file
这会使用sed '/pattern/s/find/replace/' file
,它会在包含s/find/replace/
的所有行中替换pattern
。
在这种情况下,我们捕获,No
,因为它可以是大写或小写,以便打印回来。
$ sed -r '/ABC/s/(,N[oO])/XYZ\1/' a
ABC DEF XYZ,No
IMD DEF ,NO
ANC KOJD ,NO
ABC MSL XYZ,NO
答案 1 :(得分:0)
这可能适合你(GNU sed):
sed '/ABC/s/,no/XYZ &/i' file
这适用于no
的所有情况,但是如果您只想满足No
或NO
使用:
sed '/ABC/s/,N[oO]/XYZ &/' file