【发布时间】:2016-08-14 23:54:01
【问题描述】:
我有这个输入文件:file_in.txt(用竖线分隔)
3345:tyg|rty|27|0|0|ty6|{89|io|}62|0
3346:tyg|rtyuio|63|0|1|ty6|{89|gh|}45|0
3347:tyu|ray|24|0|0|ty6|{89|uh|}27|0
3348:tyg|rtoy|93|0|1|ty6|{89|yh|}1|0
3349:tyo|rtert|28|0|0|ty6|{89|gh|}27|0
我只想使用 '|' 作为分隔符获取第 9 个字段值为 }27 的行,这样我的输出应该是:
3347:tyu|ray|24|0|0|ty6|{89|uh|}27|0
3349:tyo|rtert|28|0|0|ty6|{89|gh|}27|0
以下命令可以正常工作:
awk -F"|" '{ if ($9 == "}27") print $0 }' file_in.txt
但我想使用 shell 变量而不是 "}27",我对此进行了尝试:
taskid="}27"
awk -v tid="$taskid" -F"|" '{ if ($9 == "}tid") print $0 }' file_in.txt
请帮我弄清楚这个命令哪里出错了。 任何其他实现相同的命令建议都表示赞赏。
【问题讨论】:
-
你试过的命令的输出是什么?