gpt4 book ai didi

linux - 我可以使用变量作为 AWK 的 {print} 的参数吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:46:00 25 4
gpt4 key购买 nike

我有这个 bash 语句用于打印 .csv 文件中的特定单元格。

set `cat $filename | awk -v FS=',' '{print $2}' | head -5 | tail -n 1`

'{print $2}' 部分确定列,head -5 部分确定行。

我可以用 $counter 变量代替 $2(例如,'{print $counter}')吗?

最佳答案

答案是"is"——而且有几种方法可以满足您的需求。正确的方法是使用 -v 声明一个 awk 变量:

awk -F',' -v c=$counter 'NR==6 { print $c; exit }' "$filename"

(你会原谅我移动一些东西来做 awk 中的所有事情,将 "$filename" 安全地传递给 awk,以及摆脱 set 和反引号——它们无济于事。)

另一种实现此目的的方法有点“hackish”——利用 shell 引用规则。此方法需要一些转义以确保第一个 $ 字符(引用 awk 中预期的 field)不被 shell 解释。 . 以下适用于 bash(和 POSIX sh):

awk -F',' "NR==6 { print \$$counter; exit }" "$filename"

关于linux - 我可以使用变量作为 AWK 的 {print} 的参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37019296/

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