検索して最後の4文字に置き換えます。

検索して最後の4文字に置き換えます。

ここには、次のデータを含むCSVファイルがあります。

1,2,CC-12345678-20201120,6
1,3,CC-87654321-20201110,5

「CC-」の後の特定の文字列を最後の4桁に置き換える必要があります。

予想出力:

1,2,CC-5678-20201120,6
1,3,CC-4321-20201110,5

awkやsedを使用しようとしています。ありがとう

答え1

そしてsed

sed 's/CC-[^-]*\([^-]\{4\}\)/CC-\1/' file

または、読みやすくするには、拡張正規表現を使用してください。

sed -E 's/CC-[^-]*([^-]{4})/CC-\1/' file

これによりs、ダッシュ以外の最後の 4 文字とダッシュ以外の文字の後続の数字が変わり、その後に で表示される 4 文字が置き換えられます。CC-[^-]*[^-]\{4\}CC-\(\)

答え2

使用sed

$ sed 's/\([^-]*-\)[0-9]\+\([0-9]\{4\}\)/\1\2/' input_file
1,2,CC-5678-20201120,6

1,3,CC-4321-20201110,5

答え3

そしてawk

awk -F- -v OFS=- '$1~/,CC$/{$2=substr($2, length($2)-3)}1' file

文字列を分割し、-最初のフィールドが目的のパターン()で終わる場合は、,CC最後の4文字を取得します。すべての行を印刷します(1)。

関連情報