具有模式匹配的子集行

问题描述 投票:1回答:2

我有一个制表符分隔文件,其列格式如下:

cat    1/1:127:59:0:1    0/0:.:78:0:.,.,.:1    0/0:.:64:0:.,.,.:     
cat    0/0:.:53:0:.,.,.:1    0/1:.:53:0:.,.,.:0    0/0:.:57:0:.,.,.:1
dog    1/0:127:59:0:1    1/1:.:78:0:.,.,.:1    0/0:.:64:0:.,.,.:1

我需要将所有具有一个或多个以“1/1:”开头并以“:1”结尾的列的行进行子集化,并给出以下文件:

cat    1/1:127:59:0:1    0/0:.:78:0:.,.,.:1    0/0:.:64:0:.,.,.:0
dog    1/0:127:59:0:1    1/1:.:78:0:.,.,.:1    0/0:.:64:0:.,.,.:1

我尝试过使用grep和正则表达式,但我似乎无法让它工作。

任何帮助将不胜感激!

NB。实际文件非常大

regex bash awk grep
2个回答
0
投票

你可以试试

^.+?\s1\/1.+

a demo on regex101.com


0
投票

使用grep,BRE应该是这样的:

grep ' 1/1:[^ ]*:1\( \|$\)' file

您只需要检查一列是否以所需的分隔符开始和结束。

请注意,正则表达式的开头有一个空格。

© www.soinside.com 2019 - 2024. All rights reserved.