[英]using gawk in a shell script
我想做一些事情:
for i in 1 2 3
do
gawk '{if ($i==$2) {print $0;}}' filename
done
这可能吗?
谢谢
为了避免引用不正确,可以使用gawk的变量传递功能:
for i in 1 2 3
do
gawk -v param=$i '{if (param==$2) {print $0}}' filename
done
假设您想将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
很好,这是有可能的,但是它可能不会做您想要做的事。
......想起来了,你想让它做呢? 从你写的内容来看还不清楚。 您可能需要更改的一件事是用双引号替换单引号,因为变量(例如$i
)不会被替换为单引号字符串。
您会想到两种可能的脚本解释:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.