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
我正在尝试以最多但不包括冒号grep开头的行的所有字符,在本例中,结果将是.@:A00940
我试过这个:
cat file.txt | grep '[^:]*'
和这个:
cat file.txt | grep '^(.*?):'
但是这两个命令都不起作用,这是为什么呢?
回答
使用您显示的样本,您能否尝试以下操作。
awk 'match($0,/@[^:]*/){print substr($0,RSTART+1,RLENGTH-1)}' Input_file
随着sed解决方案:简单地停止所有行打印和打印仅在比赛由正则表达式发现这些行。
sed -n 's/^@([^:]*):.*/1/p' Input_file