总结 我有一个 1.txt,顺序如下:
HLA-A1
HLA-A2
HLA-A3
HLA-A4
.
.
.
另外 2.txt 的顺序如下(行号="2/3"是常数,只是外显子线发生了变化(
exon 1..2
/number="2"
exon 3..4
/number="3"
exon 6..7
/number="2"
exon 4..7
/number="3"
exon 9..31
/number="2"
exon 25..134
/number="3"
exon...
如何使用merge
命令或其他命令将 5 行合并为 2.txt 中的 1 行.txt以使最终结果如下所示:
HLA-A1 exon 1..2 /number="2" exon 3..4 /number="3"
HLA-A2 exon 6..7 /number="2" exon 4..7 /number="3"
HLA-A3 exon 9..31 /number="2" exon 25..134 /number="3"
HLA-A4 ...
.
.
非常感谢您的帮助!
学习 awk 并接受程序,儿子:
$ awk 'NR==FNR{a[FNR]=$0;next}{print a[FNR],$1,$2,$3,$4}' file1 RS="" FS="n" file2
输出:
HLA-A1 exon 1..2 /number="2" exon 3..4 /number="3"
HLA-A2 exon 6..7 /number="2" exon 4..7 /number="3"
HLA-A3 exon 9..31 /number="2" exon 25..134 /number="3"
HLA-A4 exon...
您可以使用paste
命令逐行合并文件。
请您尝试:
paste -d " " 1.txt <(perl -0777 -pe 's/(?<!n)n(?!$)/ /g' 2.txt)
1.txt:
HLA-A1
HLA-A2
HLA-A3
2.txt:
exon 1..2
/number="2"
exon 3..4
/number="3"
exon 6..7
/number="2"
exon 4..7
/number="3"
exon 9..31
/number="2"
exon 25..134
/number="3"
输出:
HLA-A1 exon 1..2 /number="2" exon 3..4 /number="3"
HLA-A2 exon 6..7 /number="2" exon 4..7 /number="3"
HLA-A3 exon 9..31 /number="2" exon 25..134 /number="3"
[说明]
perl
脚本通过替换单个换行符来重新格式化2.txt
带有空格。(有几种方法可以做到这一点(- 语法
<(list)
是process substitution
和输出 的list
作为第二个参数提供给paste
命令。该机制使您免于创建临时文件。
希望这有帮助。