我有这个输入文件:文件中.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
请帮我找出这个命令哪里出了问题。任何其他达到相同目的的命令建议都值得赞赏。
答案1
尝试
taskid="}27"
awk -v tid="$taskid" -F"|" '$9 == tid' file_in.txt
- 默认操作是打印该行。
- 您不需要包含该变量。