这是一个简单的问题,但我没有找到答案...... 我有一个制表符分隔文件,每行有很多行和不同数量的字段。像这样:
a1_j a2_f a3_f a10_g a8_t a2_e
a2_j
a6_h a8_o
a9_g
我只想打印那些以a2开头的字段,而不是整行,只是匹配的字段。就像这样:
a2_f
a2_e
a2_j
我尝试使用awk,但没有成功。
答案 0 :(得分:2)
我会用grep来做到这一点:
grep -o 'a2_[a-z]' file
-o
开关意味着只打印匹配,每个匹配在一个单独的行上。
答案 1 :(得分:1)
您可以使用for循环遍历所有字段,或使用fmt
将所有字段放在1行:
~$ fmt -w1 f
a1_j
a2_f
a3_f
a10_g
a8_t
a2_e
a2_j
a6_h
a8_o
a9_g
然后使用grep
grep,或者如果您想使用awk
:
~$ fmt -w1 f | awk '/a2/{print}'
a2_f
a2_e
a2_j
答案 2 :(得分:1)
使用GNU awk进行多字符RS和\s
:
$ awk -v RS='\\s' '/^a2/' file
a2_f
a2_e
a2_j