Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Grep基于一行的前12个字符,但输出整行_Regex_Search_Grep - Fatal编程技术网

Regex Grep基于一行的前12个字符,但输出整行

Regex Grep基于一行的前12个字符,但输出整行,regex,search,grep,Regex,Search,Grep,我有一个文件(patterns.txt),其中包含一个新行分隔的模式列表,例如: AAAA........ ....CCCC.... ........YYYY ATCC 我正在搜索的文件(table.txt)包含如下内容(大小为120gb): 我正在使用以下grep命令: grep -f patterns.txt table.txt 这将返回我的示例中的所有行。然而,如果我可以强制grep只查看前12个字符,那么第一行和第三行就不会返回(这是需要的) 这个grep是一个更大的程序的一部分。这

我有一个文件(patterns.txt),其中包含一个新行分隔的模式列表,例如:

AAAA........
....CCCC....
........YYYY
ATCC
我正在搜索的文件(table.txt)包含如下内容(大小为120gb):

我正在使用以下grep命令:

grep -f patterns.txt table.txt
这将返回我的示例中的所有行。然而,如果我可以强制grep只查看前12个字符,那么第一行和第三行就不会返回(这是需要的)

这个grep是一个更大的程序的一部分。这意味着模式必须来自文件。但我可以改变文件的内容,如果需要的话

我在考虑用字符类[ACGTHY]替换所有的点。这意味着模式AAAA……。将变成:

AAAA[ACGTHY][ACGTHY][ACGTHY][ACGTHY][ACGTHY][ACGTHY][ACGTHY][ACGTHY]

这将提供所需的结果,但它似乎相当缓慢。有更好的方法吗


编辑:我也在考虑用\S替换点。

你能修改patterns.txt吗


在这种情况下,在每行之前添加一个
^
就可以了。这将匹配您的模式,只有当他们开始一行。

您将需要一些更强大的。尝试使用
awk

awk 'FNR==NR { a[$1]++; next } { for (i in a) if ($1 ~ i) print }' patterns table
结果:

AAAAGTGTAAYY    0   9   1
HHHHHHHHYYYY    1   8   0
AAATCCCHHHHH    0   0   1

那么table.txt中的最后一行将不会由grepIn返回。在这种情况下,当模式长度不是12个字符时,您可以忽略行搜索的开始。但在这种情况下,我认为简单地编写一个脚本来为您实现这一点会更容易。120GB的文本文件意味着您应该使用数据库。
AAAAGTGTAAYY    0   9   1
HHHHHHHHYYYY    1   8   0
AAATCCCHHHHH    0   0   1