0

请参考下面的文件内容。

    @HD VN:1.0  SO:unsorted
    @SQ SN:Chr1 LN:30427680
    @PG ID:bowtie2  PN:bowtie2  VN:2.1.0

如何使用 awk 或任何其他 unix 命令仅提取数字 30427680。

4

5 回答 5

2

使用 sed

sed -n 's/.*LN://p' < input.txt

这将擦除直到 的所有内容LN:,并打印剩下的内容,并且仅在确实发生替换的情况下。

使用 awk

awk -v FS=: '/LN:/ { print $3; }' < input.txt

这将匹配包含 的行LN::用作字段分隔符,并打印第三列。

使用 grep

grep -o '[0-9]\{3,\}' < input.txt 

这将匹配 3 位或更多位的序列,并仅打印匹配的模式,这要归功于-o.

根据您的问题中未包含的其他情况,您可能必须使模式更加严格。

于 2013-10-14T18:21:02.417 回答
1

使用 grep:

grep -oP 'LN:\K.*' filename
于 2013-10-14T18:24:21.830 回答
0

使用

perl -ne 'print $& if /LN:\K.*/' filename

或者

perl -ne 'print $1 if /LN:(.*)/' filename
于 2013-10-14T19:27:25.697 回答
0

只需使用 grep:

grep -o 30427680 file

-o, --only-matching
         Prints only the matching part of the lines.
于 2013-10-14T18:27:11.923 回答
0

其他awk

awk -F"LN:" 'NF>1 {print $2}' file
于 2013-10-14T20:09:37.800 回答