1行でパターンマッチングの前後にフィールドを印刷する

1行でパターンマッチングの前後にフィールドを印刷する

私のファイルには次のデータが含まれています。

tail fn0 logfile
more  tail3 fn0 logfile1
get than tail4 fn0 logfile2

fn0以前のフィールドとfn0以降のフィールドの出力を取得したいと思います。

予想出力:

tail logfile
tail3 logfile1
tail4 logfile2

ベストアンサー1

あなたはそれを使用することができますawk

awk -v pattern="fn0" '{for (i=0;i<=NF;i++) {if ($i==pattern) print $(i-1),$(i+1) }}' file

または正規表現パターンを使用したい場合:

awk -v pattern="^fn0$" '{for (i=0;i<=NF;i++) {if ($i~pattern) print $(i-1),$(i+1) }}' file

出力:

tail logfile
tail3 logfile1
tail4 logfile2

おすすめ記事