我正在學習一些awk。我在網上找到了一個採取固定寬度文件並將其轉換爲csv文件的示例。這裏只是其中的一部分,我不明白,即使經過許多人的網頁和在線教程去後:請解釋此awk腳本採取固定寬度爲CSV
1: awk -v FIELDWIDTHS='1 10 4 2 2' -v OFS=',' '
2: { $1=$1 ""; print }
3: ' data.txt`
即從樣品在線(found here)一字不差。
我不明白的是第2行。我沒有條件,所以'程序'(包含在括號中)將始終執行每條記錄(行)。我不明白爲什麼它在執行$1=$1
以及空字符串語句"";
。但是,刪除這些會導致錯誤的行爲。
該行最好寫成'{$ 1 = $ 1} 1',並且只是強制更改記錄結構,以便'awk'使用'OFS'將每行重寫爲逗號 – anubhava
Thanks @anubhava。當我運行'{$ 1 = $ 1;打印}'它的工作!關於改變記錄結構以引起重寫的你的評論是關鍵!如果你想寫一個答案,我會投票。 – ryancdotnet
此外,有了這些信息,我能夠找到一個相關的SO問題和一些其他有用的信息:https://stackoverflow.com/questions/13704947/print-all-fields-with-awk-separated-by-ofs – ryancdotnet