请教一个 awk 正则匹配的问题,如何将一个变量作为匹配项传入 awk 的模式中

2019-11-26 21:44:19 +08:00
 ThinkTwive

gawk '$3=/1/' demo1 | awk '{print $1,$2,$5}'
这时候可以匹配到第三个字段等于 1 的所有行
现在 1 是个变量 num,可能是 2,3,4
那么如何将$num 传进去,下面这样写肯定不行。求教各位。
gawk '$3=/$num/' demo1 | awk '{print $1,$2,$5}'

1786 次点击
所在节点    问与答
8 条回复
fengtons
2019-11-26 21:50:14 +08:00
试试:
gawk '$3=/'$num'/' demo1 | awk '{print $1,$2,$5}'
Jirajine
2019-11-26 21:50:20 +08:00
# num=1
# echo '$3=/'"$num"'/'
$3=/1/
oneisall8955
2019-11-26 22:00:57 +08:00
印象 awk 需要用单门冒号拼接方式的,楼上 1 楼可能正解,或者搜 awk 使用变量
mml
2019-11-26 22:05:40 +08:00
num=2
gawk -v num="${num}" '$3~$num' demo1
ThinkTwive
2019-11-26 22:58:47 +08:00
@fengtons 这个试过了,不行。。
ThinkTwive
2019-11-26 23:02:41 +08:00
@fengtons 不对不对,你是对的。。。。谢谢。我之前用的双引号,看错了。谢谢!
ThinkTwive
2019-11-27 11:02:28 +08:00
@oneisall8955 谢谢。解决了
@Jirajine 谢谢,您这样也可以,但是去了双引号也可以。
@mml 感谢但是,这样好像不行,最终还是要吧$num 放到单引号里面
oneisall8955
2019-11-27 11:05:08 +08:00
@ThinkTwive #7 不客气,我说的单门冒号就是单引号的意思哈~,之前做过你这种需求的,昨天忘记单引号这个术语了,有点傻

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/623408

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX