从文本文件中删除单词中的特定模式

从文本文件中删除单词中的特定模式

我的文件中有以下几行:

demo-ns,demoapp-v1-v000,2733202e0e44c0c8f49a220e5596113ee35e2566
demo-ns,demoapp-v2-v001,3b3f0592b933add32f10b7e1a7535837009a4c64

我想删除字符-v000-v001。图案是v[0-9][0-9][0-9]

我期待以下输出:

demo-ns,demoapp-v1,2733202e0e44c0c8f49a220e5596113ee35e2566
demo-ns,demoapp-v2,3b3f0592b933add32f10b7e1a7535837009a4c64

我怎样才能实现这个目标?

答案1

sed -e 's/-v[0-9][0-9][0-9],/,/'

添加的逗号提供了一些上下文,以防止替换过于激进。

答案2

使用 GNU sed

sed -E 's/-v[0-9]{3}//' file

答案3

awk

awk 'BEGIN{ OFS=FS="," } { sub(/-v[0-9]*$/,"",$2); print }' file

将输入字段分隔符FS和输出字段分隔符设置OFS为逗号。然后用空字符串替换第二个逗号分隔字段上的
正则表达式模式并打印该行。-v[0-9]*$$2

相关内容