如何找到图案位于线条中间的线条。即在下面的例子中。我想只获得第8行,但不包括第1和第5行的grepping" @"
我知道我会使用grep "^@"
只查找第一个字符但是如何排除它?
@DD65WKN1:203:H7T67ADXX:2:2216:19936:100494 1:N:0:
GTCGTTCTTCAGGTTCTC
+
FFFFFIIIIFFFIFFFFF
@DD65WKN1:203:H7T67ADXX:2:2216:6629:100501 1:N:0:
TAAAGTAGCAAAAATG
+
FFFFFFFFIFBFIFFF@DD65WKN1:203:H7T67ADXX:2:2216:6629:100501 1:N:0:
TAAAGTAGCAAAAATG
+
FFFFFFFFIFBFIFFF
由于
答案 0 :(得分:4)
您可以预先匹配任何字符,以便@
如果只是在第一个位置就不会匹配:
$ grep '.@' file
FFFFFFFFIFBFIFFF@DD65WKN1:203:H7T67ADXX:2:2216:6629:100501 1:N:0:
请注意.
匹配任何字符。要完全确定(第一个解决方案会匹配以@@
开头的行),您可以使用以下内容否定@
:
grep '[^@]@' file
或者还表示您要查找以no-@字符集开头的任何行(至少有一行,如+
所示)。
grep '^[^@]\+@' file
答案 1 :(得分:1)
将grep与Perl-regex
选项一起使用,该选项支持负面反馈。
$ grep -P '(?<!^)@' file
FFFFFFFFIFBFIFFF@DD65WKN1:203:H7T67ADXX:2:2216:6629:100501 1:N:0:
上面的grep命令会打印在开头没有@
符号的行,但它可能出现在该行的某个位置。
答案 2 :(得分:1)
关于unix过滤器的最好的事情是将它们组合起来
grep --invert-match '^@' file | grep '@'
或更传统
sed '/^@/d' file | grep '@'