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