我希望遍历 M 行 X N 列的值数组并将它们打印到屏幕上以供以后的脚本使用,但我在循环和 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 -v i=$i 'NR==i{print $1, $2}' temp_file
或
awk 'NR=='$i'{print $1, $2}' temp_file
https://stackoverflow.com/questions/33189178/