特定の列の区切り文字の更新

特定の列の区切り文字の更新

7つのフィールドを含むカンマ区切りのファイルがあります。ただし、これらのフィールドの 1 つが ,値に含まれます。|でファイルを変更せずにファイル区切り記号をに変更したいと思います,

私が持っているファイル:

Name,Age,Country,ID,Address,Category,DOB
John Doe,19,England,3653,Manchester, England,Main Worker,20-05-1995

希望の出力:

Name,Age,Country,ID,Address,Category,DOB
John Doe|19|England|3653|Manchester, England|Part Time Worker|20-05-1995

いくつかの解決策を試しましたが、欲しいものを達成できませんでした。最初の4列の区切り文字のみを更新する次のコマンドを試しました。

sed 's/,/|/;s/,/|/;s/,/|/;s/,/|/' file

私が探しているのは、最初の4列と最後の2列の区切り文字を更新することです。これにより、アドレス列を変更せずに区切られたファイルを更新できます。

以下のコードを思い出しましたが、これを行うと、,の間の内容が削除されます。ManchesterEngland

awk '{ORS="";N=split($0,a,",");\
            print a[1]"|"a[2]"|"a[3]"|"a[4]"|"; \
            for(i=5;i<N-1;i++) print a[i]; 
            print "|"a[N-1]"|"a[N] }'

ベストアンサー1

あなたはawk試すことができます:

awk -F, -v OFS='|' 'NR==1{print $0} NR>1{$5 = $5 FS $6; print $1,$2,$3,$4,$5,$7,$8}' file
Name,Age,Country,ID,Address,Category,DOB
John Doe|19|England|3653|Manchester, England|Main Worker|20-05-1995

おすすめ記事