技术解析

awk 的 pattern 在 shell 脚本中如何调用位置参数?
0
2021-06-12 03:06:46
idczone

就是希望在执行脚本时传递一个 $1 作为脚本中 awk 的 pattern

awk '/$1/{print}' #
国外服务器

如何实现这样的效果 $1 被理解成位置参数,而不是第一列


-v var=val --assign=var=val

不是很理解你说的“ $1 被理解成位置参数”是什么意思,是指$1 为调用 awk 的 shell 脚本的参数吗?
如果是,那么你可以用-v 传递变量进 awk 然后再利用。例如
awk -v mypattern="$1" '$0 ~ mypattern {print}'
这样就把$1 赋值到 awk 里的变量 mypattern,而这个 mypattern 变量就可以用~来进行匹配运算。

awk "/$1/{print}" shell 会帮你做替换,替换完了才会给 sed

可以继续扩展,比如你想要 echo 出一个 '""'怎么做?
"" ''只是 shell 用来定界用的,想明白了这一点,你可以随便传你想要的

echo "'"'""'"'"

对头。
另外补充 bash 和 zsh 对单双引号的处理不一样,不知道其他的 shell 的处理都是什么样的。我一般会向 bash 看齐,写在 shebang 行。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服