grep/awk 基于特定字段的特定行;在 awk 中使用 ksh 变量

grep/awk 基于特定字段的特定行;在 awk 中使用 ksh 变量

我有这个输入文件:文件中.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
  • 默认操作是打印该行。
  • 您不需要包含该变量。

相关内容