如何用awk删除一行中的特定单词?

时间:2012-09-09 09:30:02

标签: awk

我有一个文本文件,如下所示。在>之后我只需要PDB ID。符号。我怎么能用awk做到这一点?

>results for sequence "files/1H8U.pdb" starting "ASPILEGLUGLY"
DIEGREKQQPSRVS
>results for sequence "files/1P6K.pdb" starting "ILEALALYSASP"
IAKDVAKEGSDGATKQRTHPQDSASI

期望的输出

>1H8U
DIEGREKQQPSRVS
>1P6K
IAKDVAKEGSDGATKQRTHPQDSASI

2 个答案:

答案 0 :(得分:2)

我可能会使用sed,但这里是awk

awk '/^>/ { sub (/[^\/]+\//,">", $0); sub (/\..+/, "", $0) }1' file.txt

这是sed

sed -r '/^>/s%[^/]+/%>%;s%\..+%%' file.txt

答案 1 :(得分:1)

这可能对您有用:

awk -F[/.] '/^>/{$1=">"$2;NF=1};1' file

或:

sed '/^>.*\/\([^.]*\)\..*/s//>\1/' file