请参考下面的文件内容。
@HD VN:1.0 SO:unsorted
@SQ SN:Chr1 LN:30427680
@PG ID:bowtie2 PN:bowtie2 VN:2.1.0
如何使用 awk 或任何其他 unix 命令仅提取数字 30427680。
sed -n 's/.*LN://p' < input.txt
这将擦除直到 的所有内容LN:
,并打印剩下的内容,并且仅在确实发生替换的情况下。
awk -v FS=: '/LN:/ { print $3; }' < input.txt
这将匹配包含 的行LN:
,:
用作字段分隔符,并打印第三列。
grep -o '[0-9]\{3,\}' < input.txt
这将匹配 3 位或更多位的序列,并仅打印匹配的模式,这要归功于-o
.
根据您的问题中未包含的其他情况,您可能必须使模式更加严格。
使用 grep:
grep -oP 'LN:\K.*' filename
只需使用 grep:
grep -o 30427680 file
-o, --only-matching
Prints only the matching part of the lines.
其他awk
awk -F"LN:" 'NF>1 {print $2}' file