我有一个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',但我不知道从哪里开始.
我认为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模式时打印列.