ここには、次のデータを含む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
)。