テキストファイルから単語の特定のパターンを削除します。

テキストファイルから単語の特定のパターンを削除します。

私のファイルには次の行があります。

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

関連情報