我們似乎看到越來越多關於在Excel電子表格上執行awk的問題,所以這裏是關於如何做這件事情的Q/A。如何在cygwin中使用awk打印Excel電子表格中的字段?
我有一個Excel電子表格"$D/staff.xlsx"
(其中"$D"
是通向我的桌面)這樣的信息:
Name Position
Sue Manager
Bill Secretary
Pat Engineer
,我想打印位置字段爲給定的名稱,例如輸出Secretary
給出了輸入Bill
。
我目前可以保存爲CSV從Excel獲得:
$ cat "$D/staff.csv"
Name,Position
Sue,Manager
Bill,Secretary
Pat,Engineer
,然後運行:
$ awk -F, -v name="Bill" '$1==name{print $2}' "$D/staff.csv"
Secretary
但是這是一個更大的任務的只是一小部分,所以我必須要能夠自動從shell腳本執行此操作,而無需手動打開Excel以導出CSV文件。我如何從運行cygwin的Windows PC執行此操作?
還有更好的工具來處理比簡單的文本解析器更強大的轉換。請參閱http://unix.stackexchange.com/questions/23726/convert-a-xlsx-ms-excel-file-to-csv-on-command-line-with-semicolon-separated以及與文件類型相關的任何其他鏈接從命令行轉換。 –
另外,XLSX僅僅是一個zip文件,裏面有xml文件。請參閱http://stackoverflow.com/questions/11082278/how-to-properly-assemble-a-valid-xlsx-file-from-its-internal-sub-components –