如果我有这样的数据,
1 item1,
2 item2,
3 item3,
4 item4,
5 item5
我想用 item3 替换 item4 和 item5
除了这个还有别的吗?
awk -F ' ' '{gsub("item4","item3",$2);gsub("item5","item3",$2); print}' OFS=" " file
答案1
它是<input sed -r 's/item[45]/item3/' >output
你将会拥有
1 item1,
2 item2,
3 item3,
4 item3,
5 item3
如果你还有item48
,item522
等等。
它是
<input sed -E 's/^([0-9]{1,} +)item[45](,?)$/\1item3\3/' >output
答案2
要不与item44
或匹配行,请在替换值之前item51
测试可选逗号 ( ,?
) 和字段结尾 ( ) (如$
阿博鲁索的 sed
解决方案):
awk '$2 ~ /^item[45],?$/{ gsub(/item[45]/, "item3", $2) } 1' file
或者使用 GNUawk
的gensub
:
awk '{ $2=gensub(/^item[45](,?)$/, "item3\\1", 1, $2) } 1' file