我的文件中有以下几行:
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