更改文本文件的外观

时间:2014-03-15 13:54:01

标签: awk

我有一个文本文件如下。

>1KKW
IYLCAVLLIL
>1WY6
GSLLILKR
>1Z23
LTLQQVINLAFQ
>1ZQS

>2B25
AV
>2L3Z
LLIL
>2OPT

>3AZO
SFNVAKR

我想安排上面的文件,如下所示。我怎么能用awk做到这一点?非常感谢您的帮助!

期望的输出

1KKW     IYLCAVLLIL
1WY6     GSLLILKR
1Z23     LTLQQVINLAFQ
1ZQS     no residues
2B25     AV
2L3Z     LLIL
2OPT     no residues
3AZO     SFNVAKR

3 个答案:

答案 0 :(得分:10)

这是awk

awk 'NF {$2="\t"($2==""?"no residues":$2)} NF' RS=\> file
1KKW    IYLCAVLLIL
1WY6    GSLLILKR
1Z23    LTLQQVINLAFQ
1ZQS    no residues
2B25    AV
2L3Z    LLIL
2OPT    no residues
3AZO    SFNVAKR

这里我使用>作为记录选择器,因为它应该给出行的开头
如果$2使用$2

中没有数据,那么下一个数据将打印为"no residues"

答案 1 :(得分:2)

$ awk '{printf "%s", ( sub(/^>/,"") ? $0"\t" : (NF?$0:"no residues")ORS )}' file
1KKW    IYLCAVLLIL
1WY6    GSLLILKR
1Z23    LTLQQVINLAFQ
1ZQS    no residues
2B25    AV
2L3Z    LLIL
2OPT    no residues
3AZO    SFNVAKR

答案 2 :(得分:1)

这是一个多行sed解决方案......

命令:

sed -e '{
N
s/\n/\t/
s/>//g
s/\t$/\tno residues/g
}' text.txt


结果:

1KKW    IYLCAVLLIL
1WY6    GSLLILKR
1Z23    LTLQQVINLAFQ
1ZQS    no residues
2B25    AV
2L3Z    LLIL
2OPT    no residues
3AZO    SFNVAKR