Ruby 将一个文件的值作为输入传递到另一个文件

Ruby 将一个文件的值作为输入传递到另一个文件,ruby,bash,shell,Ruby,Bash,Shell,我有一个文件,其中以选项卡分隔的方式包含以下信息: abscdfr 2 5678 bgbhjgy 7 8756 ptxfgst 5 6783 让我们把这个文件称为A,它包含2000行 我还有一个用ruby编写的文件B 将这些值作为命令行输入: f_id = ARGV[0] lane = ARGV[1].to_i sample_id = ARGV[2].to_i puts " #{f_id}_#{lane}_#{sample_id}.bw" 我通过在文件A中提供信息,在ru

我有一个文件,其中以选项卡分隔的方式包含以下信息:

abscdfr  2   5678
bgbhjgy  7   8756
ptxfgst  5   6783
让我们把这个文件称为A,它包含2000行

我还有一个用ruby编写的文件B

将这些值作为命令行输入:

f_id = ARGV[0]
lane = ARGV[1].to_i 
sample_id = ARGV[2].to_i
puts " #{f_id}_#{lane}_#{sample_id}.bw"
我通过在文件A中提供信息,在ruby中执行文件B

./fileB.rb abscdfr 2 5678

我想知道如何以递归方式将文件A的值作为输入传递给文件B

如果是一个值,那很容易,但我对三个值感到困惑

请帮助我用bash或ruby为这两个文件编写一个包装器


谢谢

您可以使用一个小bash脚本来循环文件中的每一行,并将内容作为参数输出到另一个脚本

读行时
;做
eval“/fileB.rb$行”
完成


这将对引号中的行进行评估,就像您自己将其输入到shall中一样。

您可以使用一个小bash脚本来循环文件中的每一行,并将内容作为参数输出到另一个脚本

读行时
;做
eval“/fileB.rb$行”
完成


这将对引号中的行进行评估,就像您自己将其输入到shall中一样。

您可以使用一个小bash脚本来循环文件中的每一行,并将内容作为参数输出到另一个脚本

读行时
;做
eval“/fileB.rb$行”
完成


这将对引号中的行进行评估,就像您自己将其输入到shall中一样。

您可以使用一个小bash脚本来循环文件中的每一行,并将内容作为参数输出到另一个脚本

读行时
;做
eval“/fileB.rb$行”
完成


这将对引号中的行进行评估,就像您自己将其输入到shall中一样。

以下命令将在
bash
中执行此操作:

while read line; do ./fileB.rb $line; done < fileA
读行时
;do./fileB.rb$行;完成

这会将每一行读入
。然后为每一行运行
/fileB.rb$line
<代码>$line在计算命令行之前被替换,因此每行中的每个单词都作为自己的参数传递,重要的是没有像
“$line”
这样的引号
read
STDIN
读取,通常会等待用户输入,但是使用
fileA
的内容重定向到
STDIN
,以便
read
从那里获取输入。

以下命令将在
bash
中执行此任务:

while read line; do ./fileB.rb $line; done < fileA
读行时
;do./fileB.rb$行;完成

这会将每一行读入
。然后为每一行运行
/fileB.rb$line
<代码>$line
在计算命令行之前被替换,因此每行中的每个单词都作为自己的参数传递,重要的是没有像
“$line”
这样的引号
read
STDIN
读取,通常会等待用户输入,但是使用
fileA
的内容重定向到
STDIN
,以便
read
从那里获取输入。

以下命令将在
bash
中执行此任务:

while read line; do ./fileB.rb $line; done < fileA
读行时
;do./fileB.rb$行;完成

这会将每一行读入
。然后为每一行运行
/fileB.rb$line
<代码>$line
在计算命令行之前被替换,因此每行中的每个单词都作为自己的参数传递,重要的是没有像
“$line”
这样的引号
read
STDIN
读取,通常会等待用户输入,但是使用
fileA
的内容重定向到
STDIN
,以便
read
从那里获取输入。

以下命令将在
bash
中执行此任务:

while read line; do ./fileB.rb $line; done < fileA
读行时
;do./fileB.rb$行;完成

这会将每一行读入
。然后为每一行运行
/fileB.rb$line
<代码>$line
在计算命令行之前被替换,因此每行中的每个单词都作为自己的参数传递,重要的是没有像
“$line”
这样的引号
read
STDIN
读取,通常会等待用户输入,但使用
时,
fileA
的内容会重定向到
STDIN
,以便
read
从那里获取其输入。

您也可以使用一个行程序:

ruby -ne 'system( "./fileB.rb  #{$_}" )' < fileA
ruby-ne'system(“./fileB.rb{$}”)
说明:

  • -e
    允许我们从命令行指定脚本
  • -n
    其他有用的标志是
    -n
    (有点像
    sed-n
    awk
    ),该标志告诉ruby像while循环一样逐行读取输入或输入文件
  • $\u
    默认ruby保存存储在$\u变量中的当前行

您还可以使用一行红宝石:

ruby -ne 'system( "./fileB.rb  #{$_}" )' < fileA
ruby-ne'system(“./fileB.rb{$}”)
说明:

  • -e
    允许我们从命令行指定脚本
  • -n
    其他有用的标志是
    -n
    (有点像
    sed-n
    awk
    ),该标志告诉ruby像while循环一样逐行读取输入或输入文件
  • $\u
    默认ruby保存存储在$\u变量中的当前行

您还可以使用一行红宝石:

ruby -ne 'system( "./fileB.rb  #{$_}" )' < fileA
ruby-ne'system(“./fileB.rb{$}”)
说明:

  • -e
    允许我们从命令行指定脚本
  • -n
    其他有用的标志是
    -n
    (有点像
    sed-n
    awk
    ),该标志告诉您