【问题标题】:How to use Bash script to loop through two files [duplicate]如何使用 Bash 脚本循环遍历两个文件 [重复]
【发布时间】:2013-09-25 10:33:09
【问题描述】:

我有一个包含以下名称的文件 (file_in.txt):

aphid_splitseq.1.fasta.annot.xml
aphid_splitseq.2.fasta.annot.xml
aphid_splitseq.3.fasta.annot.xml
aphid_splitseq.4.fasta.annot.xml
aphid_splitseq.5.fasta.annot.xml

我还有另一个文件 (file_out.txt),名称如下:

aphid_splitseq_1
aphid_splitseq_2
aphid_splitseq_3
aphid_splitseq_4
aphid_splitseq_5

现在我想要这样的陈述

java -cp *:ext/*: es.blast2go.prog.B2GAnnotPipe -in aphid_splitseq.1.fasta.annot.xml -out results/aphid_splitseq_1 -prop b2gPipe.properties -v -annot -dat 

基本上,我想遍历file_in.txtfile_out.txt 中的每一个,并将-in-out 的值分别替换为ij

我已经在 Bash 中尝试过,但它似乎不起作用:

for i in `cat file_in.txt`
    for j in `cat file_out.txt`; do
        java -cp *:ext/*: es.blast2go.prog.B2GAnnotPipe -in $i -out results/$j -prop b2gPipe.properties -v -annot -dat
    done
done

【问题讨论】:

标签: bash loops


【解决方案1】:

paste 可能会有所帮助:

#!/bin/bash

paste file_in.txt file_out.txt | while read if of; do
  echo "-in $if -out $of"
done

产量:

-in aphid_splitseq.1.fasta.annot.xml -out aphid_splitseq_1
-in aphid_splitseq.2.fasta.annot.xml -out aphid_splitseq_2
-in aphid_splitseq.3.fasta.annot.xml -out aphid_splitseq_3
-in aphid_splitseq.4.fasta.annot.xml -out aphid_splitseq_4
-in aphid_splitseq.5.fasta.annot.xml -out aphid_splitseq_5

您可以修改它以获得所需的行为。

【讨论】:

  • @perreal...成功了#!/bin/bash paste files_in.txt files_out.txt | while read if of; do echo "java -cp *:ext/*: es.blast2go.prog.B2GAnnotPipe -in $if -out results/$of -prop b2gPipe.properties -v -annot -dat" done
  • @perreal 如果它解决了问题,您应该接受答案。
  • @upendra 如果它解决了问题,您应该接受答案。
【解决方案2】:

只要两个您的列表只是重复具有连续数字的同种名称,您根本不应该遍历文件。相反,只需计算一个变量并在每一步执行的任何命令中使用它。示例:

COUNT=1
while [ $COUNT -lt 5 ]; do
  mv inputfile$COUNT outputfile$COUNT
  let COUNT++
done

【讨论】:

    【解决方案3】:

    同时使用

         While read line 
         do 
           line=$(echo -ne $line | sed or awk)
         done < Directory/filename.t
    

    【讨论】:

    • 这只会循环一个文件,而不是两个文件。
    猜你喜欢
    • 2020-01-16
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多