ファイルの列2から文字列の一部を削除する方法

ファイルの列2から文字列の一部を削除する方法

入力する:

4857544398A7CB9C(HWTC98A7CB9C); AHH-ABN-19-2-59-0720000000-amir3456; 129

希望の出力:

4857544398A7CB9C(HWTC98A7CB9C),amirzain,129

-または、任意のコマンドを使用して、sed2列目の最後のハイフン()の前のすべての項目を削除したいと思います。

答え1

「列2の最後のハイフン(-)の前にあるすべての項目を削除したい」という質問の内容が本当に必要な場合は、次のコマンドを使用できます。

$ awk '{sub(/.*-/,"",$2)}1' file
4857544398A7CB9C(HWTC98A7CB9C); amirzain; 129

2列目の最後のハイフンの前のすべての項目を削除してセミコロンをコロンに変更するなど、出力を表示するには、次のコマンドを使用しますamirzainAmirzain

$ perl -lne '@F=split(/; /); $F[1] =~s/^.+-(.)/\U$1/; print join ",",@F' file
4857544398A7CB9C(HWTC98A7CB9C),Amirzain,129

答え2

使用アッ:

awk 'BEGIN{FS=";";OFS=","}{n=split($2, seq, "-");$2=seq[n];print}' <file>

出力:

4857544398A7CB9C(HWTC98A7CB9C),amirzain, 129

答え3

A2番目の列の大文字は偶然であり、,出力の置き換えは意図的なものであると仮定します。;

echo '4857544398A7CB9C(HWTC98A7CB9C); AHH-ABN-19-2-59-0720000000-amirzain; 129'|sed -r 's/^([^;]+); .*-([^;]+); (.*)/\1,\2,\3/' 
4857544398A7CB9C(HWTC98A7CB9C),amirzain,129

ファイル全体で使用するには、isedのフラグにaを追加します。

sed -ri 's/^([^;]+); .*-([^;]+); (.*)/\1,\2,\3/' file

関連情報