我想做点什么:
for i in 1 2 3
do
gawk '{if ($i==$2) {print $0;}}' filename
done
这可能吗?
感谢
答案 0 :(得分:3)
为了避免丑陋的引用,你可以使用gawk的变量传递功能:
for i in 1 2 3
do
gawk -v param=$i '{if (param==$2) {print $0}}' filename
done
答案 1 :(得分:1)
假设你想要gawk脚本
{if ($1 == $2 ) ... } {if ($2 == $2 ) ... } {if ($3 == $2 ) ... }
你可以这样做:
for i in 1 2 3 do gawk '{if ($'$i'==$2) {print $0;}}' filename done
答案 2 :(得分:0)
当然,这是可能的,但它可能不会做你想做的事。
...来想一想,你希望它做什么做?你写的东西并不是很清楚。您可能需要更改的一件事是用双引号替换单引号,因为变量(如$i
)不会替换为单引号字符串。
答案 3 :(得分:0)
我们会想到您对脚本的两种可能解释:
filename
以下是循环的两个版本:
for i in 1 2 3; do
gawk "{if (\"$i\"==\$2) {print \$0;}}" filename
done
for i in "$@"; do
gawk "{if (\"$i\"==\$2) {print \$0;}}" filename
done