1
我希望遍歷M行X N列值的數組並將它們打印到屏幕以供後面的腳本使用,但我在循環和NR方面遇到了問題。這是我到目前爲止有:將Bash Shell變量傳遞給Awk NR函數
#!/bin/bash
cat temp_file | wc -l > num_rows
i="0"
while [ $i -le `cat num_rows` ]; do
echo $i
awk 'NR==$i{print $1, $2}' temp_file
awk 'NR==$i{print $3, $4}' temp_file
((i++))
done
正如你所看到的,我希望用先找到通過每個那些行的線路,NUM_ROWS的數量和環路,並使用AWK的NR功能要經過的每一行首先打印第一欄和第二欄,然後打印第三欄和第四欄。當上面的腳本運行時出現以下錯誤結果:
0
awk: illegal field $(), name "i"
input record number 1, file temp_file
source line number 1
awk: illegal field $(), name "i"
input record number 1, file temp_file
source line number 1
1
awk: illegal field $(), name "i"
input record number 1, file temp_file
source line number 1
awk: illegal field $(), name "i"
input record number 1, file temp_file
source line number 1
2
awk: illegal field $(), name "i"
input record number 1, file temp_file
source line number 1
awk: illegal field $(), name "i"
input record number 1, file temp_file
source line number 1
3
awk: illegal field $(), name "i"
input record number 1, file temp_file
source line number 1
awk: illegal field $(), name "i"
input record number 1, file temp_file
source line number 1
4
依此類推,直到while循環完成。任何關於如何解決這個腳本的想法,因爲現在,設置NR == $ i不起作用。謝謝您的幫助。
傳遞
i
到AWK無法將整個腳本用'的awk '{打印$ 3,$ 4}' temp_file'被取代? – melpomene我編輯了上面的腳本。我需要兩次調用awk,首先打印出前兩列,然後再打印第二列兩列 –
不能將整個腳本替換爲'awk'{print $ 1,$ 2;打印$ 3,$ 4}'temp_file'? – melpomene