单行匹配模式前后打印字段

rah*_*hul 2 linux text-processing

我的文件包含以下数据:

tail fn0 logfile
more  tail3 fn0 logfile1
get than tail4 fn0 logfile2
Run Code Online (Sandbox Code Playgroud)

我想从 fn0 之前的字段和 fn0 之后的字段中获取输出。

预期输出:

tail logfile
tail3 logfile1
tail4 logfile2
Run Code Online (Sandbox Code Playgroud)

pLu*_*umo 5

您可以使用awk

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

或者如果您想使用正则表达式模式:

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

输出:

tail logfile
tail3 logfile1
tail4 logfile2
Run Code Online (Sandbox Code Playgroud)