我将每组 4 行转换为单行,然后按第 2 列对它们进行排序。以下内容适用于管道,但当我将其转换为两行 bash 脚本时,第二行无法计算。与管道一样很好,但如果有人能指出我的 bash 脚本做错了什么以供将来引用,那将会有所帮助。
命令行(工作正常):
cat test.txt | awk '{ printf("%s",$0); n++; if(n%4==0) { printf("\n");} else { printf("\t");} }' | sort -t $'\t' -k2,2 > testout.txt
bash 脚本(awk 似乎可以运行但不能排序):
#!/bin/bash
awk '{ printf("%s",$0); n++; if(n%4==0) { printf("\n");} else { printf("\t");} }'
sort -t $'\t' -k2,2
输入test.txt:
@1:1:9834:8392:Y
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT
+1:1:9834:8392:Y
IIHIIIIGGGIIIIDDDIIIIFFFHIGEFEFEFEFE
@1:1:1323:1032:Y
AGCAGCATTGTACAGGGCTATCATGGAATTCTCGGG
+1:1:1323:1032:Y
HHHBHHBHBHGBGGGH8HHHGGGGFHBHHHHBHHHH
@1:1:1610:1033:Y
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+1:1:1610:1033:Y
HHEHHHHHHHHHHHBGGD>GGD@G8GGGGDHBHH4C
@1:1:1679:1032:Y
CGGTGGATCACTCGGCTCGTGCGTCGATGAAGAACG
+1:1:1679:1032:Y
IIIHIIGIIIIIIIDIIIFHEIEDGFEFGECEEEGB
输出testout.txt(期望的输出):
@1:1:1610:1033:Y AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +1:1:1610:1033:Y HHEHHHHHHHHHHHBGGD>GGD@G8GGGGDHBHH4C
@1:1:9834:8392:Y AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT +1:1:9834:8392:Y IIHIIIIGGGIIIIDDDIIIIFFFHIGEFEFEFEFE
@1:1:1323:1032:Y AGCAGCATTGTACAGGGCTATCATGGAATTCTCGGG +1:1:1323:1032:Y HHHBHHBHBHGBGGGH8HHHGGGGFHBHHHHBHHHH
@1:1:1679:1032:Y CGGTGGATCACTCGGCTCGTGCGTCGATGAAGAACG +1:1:1679:1032:Y IIIHIIGIIIIIIIDIIIFHEIEDGFEFGECEEEGB
bash 脚本用法:
cat test.txt | ./duplicates_1000.sh > testout.txt
bash脚本的输出(执行了awk但没有排序):
@1:1:9834:8392:Y AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT +1:1:9834:8392:Y IIHIIIIGGGIIIIDDDIIIIFFFHIGEFEFEFEFE
@1:1:1323:1032:Y AGCAGCATTGTACAGGGCTATCATGGAATTCTCGGG +1:1:1323:1032:Y HHHBHHBHBHGBGGGH8HHHGGGGFHBHHHHBHHHH
@1:1:1610:1033:Y AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +1:1:1610:1033:Y HHEHHHHHHHHHHHBGGD>GGD@G8GGGGDHBHH4C
@1:1:1679:1032:Y CGGTGGATCACTCGGCTCGTGCGTCGATGAAGAACG +1:1:1679:1032:Y IIIHIIGIIIIIIIDIIIFHEIEDGFEFGECEEEGB
提前谢谢你。
最佳答案
您必须将 awk
的输出通过管道传递给 sort
#!/bin/bash
awk '{ printf("%s",$0); n++; if(n%4==0) { printf("\n");} else { printf("\t");} }' | sort -t $'\t' -k2,2
或者它们按顺序运行,awk
将吃掉所有输入,并且没有任何内容可用于sort
关于linux - 管道有效,但 bash 脚本无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34506285/