将 item4 和 item5 替换为 item3

将 item4 和 item5 替换为 item3

如果我有这样的数据,

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

如果你还有item48item522等等。

它是

<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

或者使用 GNUawkgensub

awk '{ $2=gensub(/^item[45](,?)$/, "item3\\1", 1, $2) } 1' file

相关内容