私のファイルには次の行があります。
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
コンマに設定します。次に、2番目のカンマ区切りフィールドの
正規表現パターンを空の文字列に置き換えて、その行を印刷します。-v[0-9]*$
$2