awkunix-匹配正则表达式-正则表达式字符串大小限制想法?
以下代码用作最小示例。它在文本中搜索一个不匹配的正则表达式(后来是一个大的 DNA 文件)。
awk 'BEGIN{print match("CTGGGTCATTAAATCGTTAGC...", /.ATC|A.TC|AA.C|AAT./)}'
后来我对找到正则表达式的位置感兴趣。因此 awk 命令更复杂。就像这里解决了一样
如果我想搜索更多的不匹配和更长的字符串,我会想出很长的正则表达式:
example: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" with 3 mismatches "." allowed:
/
...AAAAAAAAAAAAAAAAAAAAAAAAAAA|
..A.AAAAAAAAAAAAAAAAAAAAAAAAAA|
..AA.AAAAAAAAAAAAAAAAAAAAAAAAA|
-
- and so on. (actually 4060 possibilities)
/
我的解决方案的问题是:
- awk 不会接受很长的正则表达式!(限制似乎在大约 80.000 个字符)
- 错误:“bash:/usr/bin/awk:参数列表太长”
- 可能的解决方案:SO-Link但我没有找到解决方案...
我的问题是:
- 我还能以某种方式使用长正则表达式吗?
- 拆分字符串并多次运行命令可能是一个解决方案,但是我会得到重复的结果。
- 有没有另一种方法来解决这个问题?
- (“agrep”会起作用,但不能找到位置)