如何使我的程序采取多个标准输入并给出多个标准输出作为回报?

时间:2016-02-06 16:56:31

标签: bash shell

我能够编写这个程序,将包含此类字符串ATCGTAATTC的“file.txt”作为输入,并将包含类似CAATTACGAT之类的名为“compl-file.txt”的第二个文件作为输出。所有这些都运行良好,但实际上我需要这个程序将许多文件作为输入,并在应用所有进程时提供许多compl文件作为输出。 谢谢你的帮助!

#! /usr/bin/bash
#
##create file called compl-*
name=`echo $1 | sed -e 's/\(.*\)/compl-\1/'`
touch $name 
##upside down
VAR1=$(tac < $1)
echo "$VAR1" > $name
##reverse
VAR2=$(rev $name)
echo "$VAR2" > $name
##replace G/C C/G
VAR3=$(sed -e 's/C/X/g; s/G/C/g; s/X/G/g' $name)
echo "$VAR3" > $name
##replace A/T T/A
VAR4=$(sed -e 's/A/Y/g; s/T/A/g; s/Y/T/g' $name)
echo "$VAR4" > $name

1 个答案:

答案 0 :(得分:0)

许多文件名可以作为参数给出。您可以一次处理每个:

for name
do
    # Process filename here as "$name" (put the filename in double quotes)

done

对于输出文件名,有几种识别方法。您可以在文件名末尾添加一个计数器,一个日期/时间戳,或使用输入文件名并在末尾附加“-compl”。这真的取决于你需要如何识别每一个。

顺便说一句,在您的代码中,您不断覆盖该文件,您可能希望附加>> "$name"