linux:从文件中提取模式

use*_*607 2 linux awk sed

我有一个4列大的制表符分隔.txt文件

col1    col2    col3    col4
name1   1       2       ens|name1,ccds|name2,ref|name3,ref|name4
name2   3       10      ref|name5,ref|name6
...     ...     ...     ...
Run Code Online (Sandbox Code Playgroud)

现在我想从这个文件中提取以'ref |'开头的所有内容.此模式仅存在于col4中

所以对于这个例子,我希望得到输出

ref|name3
ref|name4
ref|name5
ref|name6
Run Code Online (Sandbox Code Playgroud)

我想过为这个使用'sed',但我不知道从哪里开始.

Jua*_*doy 5

我认为awk更适合这项任务:

$ awk  '{for (i=1;i<=NF;i++){if ($i ~ /ref\|/){print $i}}}' FS='( )|(,)' infile
ref|name3
ref|name4
ref|name5
ref|name6
Run Code Online (Sandbox Code Playgroud)

FS='( )|(,)'FS通过,和设置multile 到itinerate 列blank spaces,然后在找到ref模式时打印列.