排除包含字符串' x'的通配符

时间:2017-12-23 16:25:33

标签: bash grep wildcard

有没有办法修改egrep -rha 'part1.*part2'以添加类似:"如果.*包含(不一定等于)string_x那么模式不匹配"?问题是string_x出现在每一行中,所以我不能-v它。在模式之前或之后有这个字符串是可以的,只是不在它的中间。

我假设双.*not string_x之间的.{n,m}将完成工作,但它会耗费大量时间,而且我有时会使用string_x通配符,在这种情况下,它将加倍所需的通配符长度。每次在part2之前遇到 install.packages("igraph") library("igraph") tfile<-tempfile() download.file("http://pdg.cnb.uam.es/pazos/tmp/Yeast_int.txt", tfile) datosraw <- subset(read.delim(tfile, sep="\t", header=F, stringsAsFactors = F), !is.na(V3) & V3!="" & V3!="METHOD") names(datosraw)<-c("orf1","orf2","method") datos<-split(datosraw,datosraw$method) df.y2h <- graph.data.frame(d = datos$Y2H[1:5125,c(1,2)], directed = FALSE) deg.dist.df.y2h <- degree.distribution(df.y2h) plot(deg.dist.df.y2h, xlab="k", ylab="P(k)", main="Y2H") plot(deg.dist.df.y2h, xlab="log k", ylab="log P(k)", main="Y2H", log = "xy", asp) abline(lm(deg.dist.df.y2h)) 时,可能会终止某种搜索?

1 个答案:

答案 0 :(得分:2)

忘了你曾经听过-r或任何其他选项让grep找到文件。这是一个非常好的工具,用于查找名称非常明显的文件 - find。保持grep,了解它在做什么g/re/p。我无法想象当他们决定提供grep选项来查找文件时,GNU的人吸烟了什么,但希望他们现在不打算添加选项来排序文件或从网站提取内容或打印流程数据或做任何其他现有工具做得非常好的事情!

在这种情况下,您不仅仅需要查找g/re/p,所以您应该使用awk:

awk '/part1.*part2/ && !/part1.*string_x.*part2/'

所以完整的脚本就像(未经测试,因为没有提供样本输入/输出):

find . -type f -exec awk '/part1.*part2/ && !/part1.*string_x.*part2/' {} +