2016-03-09 60 views
0

具有包括文件的一部分:的Mac OS X在awk - 打印輸入線和輸入線一起

field1/field2/field3 

你怎麼用awk產生以下輸出?

field2 field1/field2/field3 

在Linux上:awk -F '/' '{print $2 " " $_}'正在完成這項工作。

但Mac OS X上的等效項:awk -F '/' '{print $2 " " $0}'僅打印輸入行$0

+0

'$ _'只「做工作」,因爲你可以創建一個名爲'變量_'所以當AWK看到'$ _'它認爲你正在試圖訪問該字段w ^軟管號存儲在名爲'_'的變量中,並且由於該變量未初始化,所以其值爲空或零,因此'$ _'被視爲'$ 0'並打印整個記錄。不要使用'_'作爲變量名稱,除非您試圖混淆您的代碼。你發佈的第二條命令不可能只打印輸入行,它至少會在前面加上一個空白字符,但將命令改爲'print NF',「<"$2">」,「[」$ 0「]」'進行調試。 –

+0

謝謝Ed,調試方案讓我可以繼續前進。當我從頭開始創建示例文件時,它正在工作,但在我的真實文件中不是。我基本上得到「] <> [field1/field2 ...」...我猜想文件格式有問題。仍然試圖弄清楚究竟是什麼...... – jqdoumen

+0

不要嘗試將格式化文本放入註釋中,因爲您無法 - 編輯您的問題以包含輸入和輸出以及您運行的腳本。堅持下去 - 我敢打賭你的輸入文件是在Windows上創建的,因此包含了虛假控制 - 這些混亂了輸出外觀的Ms。使用'cat -v'來查看它們,'dos2unix'或類似的來移除它們。 –

回答

0

我驗證過您的AWK咒語(與-F '/',或等效-F/)與下面每一個產生在Mac上正確的結果:

  1. 在/ usr/bin中/ AWK版本20070501
  2. 呆子
  3. mawk