grep 模式直到特定字符 (:)

ale*_*lex 0 regex grep

考虑以下几点file.txt

@A00940:70:HTCYYDRXX:2:2101:1561:1063 1:N:0:ATCACG
TAGCACTGGGCTGTGAGACTGTCGTGTGTGCTTTGGATCAAGCAAGATCGG
+
FFFFFFFFFFFFFFFFFFFFFFFFFF:FFF::FFFFFFF:FFFFFFFFFFF
@A00940:70:HTCYYDRXX:2:2101:2175:1063 1:N:0:ATCACG
CGCCCCCTCCTCCGGTCGCCGCCGCGGTGTCCGCGCGTGGGTCCTGAGGGA
+
FFFF:FFFFF:FFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFFFFFFFFF
@A00940:70:HTCYYDRXX:2:2101:2772:1063 1:N:0:ATCACG
TGGTGGCAGGCACCTGTAATCCCAGCTACTCGGGAGCCTGAGGCAGGAGAA
Run Code Online (Sandbox Code Playgroud)

我正在尝试以最多但不包括冒号grep开头的行的所有字符,在本例中,结果将是.@:A00940

我试过这个:

cat file.txt | grep '[^:]*'

和这个:

cat file.txt | grep '^(.*?):'

但是这两个命令都不起作用,这是为什么呢?

Rav*_*h13 5

使用您显示的样本,您能否尝试以下操作。

awk 'match($0,/@[^:]*/){print substr($0,RSTART+1,RLENGTH-1)}' Input_file
Run Code Online (Sandbox Code Playgroud)

随着sed解决方案:简单地停止所有行打印和打印仅在比赛由正则表达式发现这些行。

sed -n 's/^@\([^:]*\):.*/\1/p' Input_file
Run Code Online (Sandbox Code Playgroud)