grep 排除第一个字符

Ana*_*nta 0 unix bash shell grep

如何找到图案位于线条中间的线条。即在下面的例子中。我只想获取第 8 行,但排除第 1 行和第 5 行 grep“@”

我知道我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
Run Code Online (Sandbox Code Playgroud)

谢谢

fed*_*qui 5

您可以预先匹配任何字符,这样@如果仅在第一个位置,则不会匹配:

$ grep '.@' file
FFFFFFFFIFBFIFFF@DD65WKN1:203:H7T67ADXX:2:2216:6629:100501 1:N:0:
Run Code Online (Sandbox Code Playgroud)

请注意,.匹配任何字符。为了完全确定(第一个解决方案将匹配以 开头的行@@),您可以@使用以下命令进行否定:

grep '[^@]@' file
Run Code Online (Sandbox Code Playgroud)

或者还表明您想要查找以 no-@ 字符集开头的任何行(至少一个,如 所示+)。

grep '^[^@]\+@' file
Run Code Online (Sandbox Code Playgroud)