我有一個製表符分隔文件。如果這些值包含製表符,則它們將包含在"
中。所以示例記錄如下所示:從製表符分隔文件中獲取值
firstfield secondfield thirdfield
firstfield "second field with tab" thirdfield
firstfield secondfield thirdfield
是否可以編寫一個可以處理這種情況的cut/awk單個內襯?例如,我想獲得第二和第三列。
我有一個製表符分隔文件。如果這些值包含製表符,則它們將包含在"
中。所以示例記錄如下所示:從製表符分隔文件中獲取值
firstfield secondfield thirdfield
firstfield "second field with tab" thirdfield
firstfield secondfield thirdfield
是否可以編寫一個可以處理這種情況的cut/awk單個內襯?例如,我想獲得第二和第三列。
由於@fedorqui評論有這個任務比gawk
更好的工具,無論如何檢查FPAT變量。
快速perl
解決方案。
perl -F'(\w+|"[^"]+")' -ane 'print $F[3]." ".$F[5]."\n"' file
使用GNU awk的,你可以使用FPAT
功能由klashxx指出:
script.awk
BEGIN { FPAT = "([^\t]+)|(\"[^\"]+\")"
OFS = "\t" }
{ print $2, $3 }
使用方法如下:awk -f script.awk yourfile
。該腳本採用於GNU Gawk manual - Splitting by content
對於這些場景,最好在Python或Perl中使用適當的csv解析器 – fedorqui