[英]I'm not able to process set of record through awk script
我正在嘗試處理記錄集,但我無法獲得預期的輸出,這組代碼無法打印 12 列(它是空的)。 數據測試.txt
"B64NN2",163934,"ALLPMR",22193625,G,"XYX, Test Surgery","31 Orwell Road","TTP","","IP11 7DD","IP11 7DD",,"DMB0406C","2011-09-12","2011-11-02"
"B6PPL1",215969,"ALLPMR",22192331,G,"KBC Medical Test","Open Close","JJK Cardiff","South Glamorgan","CF15 8DZ","CF15 8DZ",,"DMB4001B","2011-09-12","2013-08-01"
awk 'BEGIN { FS=","; OFS="," } { nf=0; delete f; while ( match($0,/([^,]+)|(\"[^\"]+\")/) ) { f[++nf] = substr($0,RSTART,RLENGTH); $0 = substr($0,RSTART+RLENGTH); }; print f[1],f[2],f[3],f[4],f[5],f[6],f[7],f[8],f[9],f[11],f[12],f[13],f[14],f[15] }' test.txt
輸出
"B64NN2",163934,"ALLPMR",22193625,G,"XYX, Test Surgery","31 Orwell Road","TTP","","IP11 7DD","DMB0406C","2011-09-12","2011-11-02"
"B6PPL1",215969,"ALLPMR",22192331,G,"KBC Medical Test","Open Close","JJK Cardiff","South Glamorgan","CF15 8DZ","DMB4001B","2011-09-12","2013-08-01"
但是輸出應該是這樣的
"B64NN2",163934,"ALLPMR",22193625,G,"XYX, Test Surgery","31 Orwell Road","TTP","","IP11 7DD",,"DMB0406C","2011-09-12","2011-11-02"
"B6PPL1",215969,"ALLPMR",22192331,G,"KBC Medical Test","Open Close","JJK Cardiff","South Glamorgan","CF15 8DZ",,"DMB4001B","2011-09-12","2013-08-01"
任何的想法。
我建議你一些顯而易見的事情,使用csv解析器來解析csv ,而不是計算雙引號和逗號。 這里有一個python示例:
import csv
import sys
with open(sys.argv[1], newline='') as csvfile:
csvreader = csv.reader(csvfile, delimiter=',')
csvwriter = csv.writer(sys.stdout, quoting=csv.QUOTE_ALL)
for row in csvreader:
newrow = row[0:10]
newrow.extend(row[11:])
csvwriter.writerow(newrow)
你可以像這樣運行它:
python3 script.py infile
這將刪除第 11 個字段並保留空字段:
"B64NN2","163934","ALLPMR","22193625","G","XYX, Test Surgery","31 Orwell Road","TTP","","IP11 7DD","","DMB0406C","2011-09-12","2011-11-02"
"B6PPL1","215969","ALLPMR","22192331","G","KBC Medical Test","Open Close","JJK Cardiff","South Glamorgan","CF15 8DZ","","DMB4001B","2011-09-12","2013-08-01"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.