我有一个文本文件如下。
>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
答案 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