特定のフィールドに基づくgrep / awk特定の行はawkのksh変数を使用します。

特定のフィールドに基づくgrep / awk特定の行はawkのksh変数を使用します。

次の入力ファイルがあります。file.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

私の出力が次のようになるように、}279番目のフィールド値が区切り文字である行だけを取得したいと思います。'|'

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

しかし、代わりにシェル変数を使用したいと思います"}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
  • デフォルトの動作はラインを印刷することです。
  • この変数を含める必要はありません。

おすすめ記事