為了一些微不足道的事情,我把頭撞在墻上,但我不知道為什么它不允許我通過在 AIX 6.x 上列印出來之前從檔案中讀取每一行來構建陣列。
Employee.txt
1|Sam|Smith|Seatle
2|Barry|Jones|Seatle
3|Garry|Brown|Houston
4|George|Bla|LA
5|Celine|Wood|Atlanta
6|Jody|Ford|Chicago
bash-4.3$ awk 'BEGIN { FS="|" } { employee[$1]=$0; next } { for (index=0; index<=FS; index ) print index ":" employee[index] }' Employee.txt
awk: cmd. line:1: BEGIN { FS="|" } { employee[$1]=$0; next } { for (index=0; index<=FS; index ) print index ":" employee[index] }
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: error: invalid subscript expression
使用不同的 for 回圈出現相同的錯誤。
bash-4.3$ awk 'BEGIN { FS="|" } { employee[$1]=$0 } END { for (index in employee) { print employee[index] } }' Employee.txt
awk: cmd. line:1: BEGIN { FS="|" } { employee[$1]=$0 } END { for (index in employee) { print employee[index] } }
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: error: invalid subscript expression
uj5u.com熱心網友回復:
index是內置的 GNUAWK函式,因此當您嘗試將其用作陣列鍵時會出現語法錯誤。更改index為inx避免語法錯誤并對最后一個操作應用一些更改以獲得所需的輸出
讓file.txt內容成為
1|Sam|Smith|Seatle
2|Barry|Jones|Seatle
3|Garry|Brown|Houston
4|George|Bla|LA
5|Celine|Wood|Atlanta
6|Jody|Ford|Chicago
然后
awk 'BEGIN { FS="|" } { employee[$1]=$0; next } END{ for (inx=1; inx<=NR; inx ){print inx ":" employee[inx]} }' file.txt
輸出
1:1|Sam|Smith|Seatle
2:2|Barry|Jones|Seatle
3:3|Garry|Brown|Houston
4:4|George|Bla|LA
5:5|Celine|Wood|Atlanta
6:6|Jody|Ford|Chicago
7:
說明:更改index為inx,將for的檢查更改為更少的行數 ( NR),將最后一個操作注冊為END(在處理完所有檔案后執行)。請注意,for對于 Arrays可能更適合它,而不是for根據您的要求使用。
(在 gawk 4.2.1 中測驗)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/375009.html
