gpt4 book ai didi

bash - 将 Bash Shell 变量传递给 Awk NR 函数

转载 作者:行者123 更新时间:2023-12-05 09:21:22 25 4
gpt4 key购买 nike

我希望遍历 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

关于bash - 将 Bash Shell 变量传递给 Awk NR 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33189178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com