簡體   English   中英

我無法通過 awk 腳本處理記錄集

[英]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"

任何的想法。

我建議你一些顯而易見的事情,使用解析器來解析 ,而不是計算雙引號和逗號。 這里有一個示例:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM