[英]Editing CSV file with Bash Script
我有一個看起來像這樣的 CSV 文件:
English, "Hawkin, Jason" ,JHAWKIN110@exampleemail.com
English, "McDonald, Matt" ,MMCDONALD114@exampleemail.com
English, "Campbell, Josh" ,JCAMPBELL111@exampleemail.com
我的意圖是制作一個 Bash 腳本來制作第二個 CSV 文件,格式如下:
ID, Email, FNAME, LNAME
jhawkin110, JHAWKIN110@exampleemail.com, Jason, Hawkin
使用“cut”刪除我不需要的第一列后,我不知道如何通過提取“電子郵件”的第一部分來創建“ID”。
使用awk
$ awk 'BEGIN {FS=OFS=","; print "ID, Email, FNAME, LNAME"}{gsub(/"/,"");split($NF,a,"@"); print tolower(a[1])," " $NF, $3, $2}' input_file
ID, Email, FNAME, LNAME
jhawkin110, JHAWKIN110@exampleemail.com, Jason , Hawkin
mmcdonald114, MMCDONALD114@exampleemail.com, Matt , McDonald
jcampbell111, JCAMPBELL111@exampleemail.com, Josh , Campbell
使用sed
$ sed -E 's/.*"([^,]*),([^"]*)..,(([^@]*)@.*)/\3,\2, \1,\L\4/;s/(.*),(.*)/\2, \1/;1iID, Email, FNAME, LNAME' input_file
ID, Email, FNAME, LNAME
jhawkin110, JHAWKIN110@exampleemail.com, Jason, Hawkin
mmcdonald114, MMCDONALD114@exampleemail.com, Matt, McDonald
jcampbell111, JCAMPBELL111@exampleemail.com, Josh, Campbell
echo 'ID, Email, FNAME, LNAME' awk -v FS=', *"?|"? *,' \ -v OFS=', ' \ '{split($4,a,"@"); print tolower(a[1]),$4,$3,$2}' file.csv
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.