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列の区切り文字を更新することです。これにより、アドレス列を変更せずに区切られたファイルを更新できます。
以下のコードを思い出しましたが、これを行うと、,
の間の内容が削除されます。Manchester
England
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