示例数据:
cat lookup.tsv
SRR7015874_1.fastq
SRR7015874_2.fastq
SRR7015875_1.fastq
SRR7015875_2.fastq
SRR7015876_1.fastq
SRR7015876_2.fastq
SRR7015877_1.fastq
SRR7015877_2.fastq使用此命令:
awk '{print $1 "\t" "SRR\_" NR ".fastq"}' lookup.tsv > lookup_table.tsv我有两栏:
SRR7015874_1.fastq SRR_1.fastq
SRR7015874_2.fastq SRR_2.fastq
SRR7015875_1.fastq SRR_3.fastq
SRR7015875_2.fastq SRR_4.fastq
SRR7015876_1.fastq SRR_5.fastq
SRR7015876_2.fastq SRR_6.fastq
SRR7015877_1.fastq SRR_7.fastq
SRR7015877_2.fastq SRR_8.fastq现在我想创建第三列,如下所示:
SRR1_1.fastq
SRR1_2.fastq
SRR2_1.fastq
SRR2_2.fastq
SRR3_1.fastq
SRR3_2.fastq
SRR4_1.fastq
SRR4_2.fastq我希望使用第二列和第三列重命名文件(即,如果文件名= $2,将其更改为$3)
我试过:
cat lookup_table.tsv | while read c1 c2; do mv $c1 $c2 ; done
SRR1_1.fastq
SRR1_2.fastq
SRR2_1.fastq
SRR2_2.fastq
SRR3_1.fastq
SRR3_2.fastq但这并不成功。我的代码/方法中有错误吗?
发布于 2022-03-30 23:53:11
这能解决你的问题吗?
awk '{print $1 "\t" "SRR_" NR ".fastq"}' lookup.tsv > tmp
awk 'END{for (i=1; i<=4; i++) for (j=1; j<=2; j++) print "SRR" i "_" j ".fastq"}' tmp > third_column.txt
paste tmp third_column.txt > lookup_table.txt
cat lookup_table.txt
SRR7015874_1.fastq SRR_1.fastq SRR1_1.fastq
SRR7015874_2.fastq SRR_2.fastq SRR1_2.fastq
SRR7015875_1.fastq SRR_3.fastq SRR2_1.fastq
SRR7015875_2.fastq SRR_4.fastq SRR2_2.fastq
SRR7015876_1.fastq SRR_5.fastq SRR3_1.fastq
SRR7015876_2.fastq SRR_6.fastq SRR3_2.fastq
SRR7015877_1.fastq SRR_7.fastq SRR4_1.fastq
SRR7015877_2.fastq SRR_8.fastq SRR4_2.fastq
while read -r c1 c2 c3; do mv "$c2" "$c3"; done < lookup_table.txt发布于 2022-03-31 08:50:55
您可以使用NR和模块获得第三列的数据,每2行增加一次i,并使用另一个变量j,即1或2。
awk '{
if (NR % 2 == 1) {++i; j=1} else {j=2}
print $1 "\tSRR_" NR ".fastq\tSSR" i "_" j ".fastq"
}' lookup.tsv > lookup_table.tsv文件lookup_table.tsv中的内容是
SRR7015874_1.fastq SRR_1.fastq SRR1_1.fastq
SRR7015874_2.fastq SRR_2.fastq SRR1_2.fastq
SRR7015875_1.fastq SRR_3.fastq SRR2_1.fastq
SRR7015875_2.fastq SRR_4.fastq SRR2_2.fastq
SRR7015876_1.fastq SRR_5.fastq SRR3_1.fastq
SRR7015876_2.fastq SRR_6.fastq SRR3_2.fastq
SRR7015877_1.fastq SRR_7.fastq SRR4_1.fastq
SRR7015877_2.fastq SRR_8.fastq SRR4_2.fastq若要重命名文件:
while read c1 c2 c3; do mv "$c2" "$c3"; done < lookup_table.tsvhttps://stackoverflow.com/questions/71685141
复制相似问题