linux逐行读取文件并传递给另一个程序

时间:2014-11-03 05:59:55

标签: linux bash

我有一个这种形式的输入文件:

Some text here
Another text here
Something else here

现在我想编写一个linux脚本,一次从输入文件中选择一行,并创建一个单独的文件,只存储收到的行。在此之后,我想将此文件传递给程序(我只有二进制文件)。是否可以编写这样的linux脚本。我习惯用C ++编程我知道它有可能存在。但是我想知道使用linux脚本是否可以这样。基本上我打算做以下事情:

   read inputfile.txt line by line
       store line read in inputFileInside.txt
       ./myprogram paramater1 inputFileInside.txt //run my C++ binary file which I usually run as (root$./myprogram parameter1 inputFileInside.txt)
      sudo sh -c \"sync; echo 3 > /proc/sys/vm/drop_caches\"
 exit when the input file has been read

2 个答案:

答案 0 :(得分:1)

您可以使用for循环

逐行读取
while read x
   do
     echo $x > inputFileInside.txt;
     # do whatever you want
   done < inputfile.txt

这可能会让你循环,$ x逐行读取直到它到达文件末尾

while read x
   do
     echo $x > $2;
     ./myprogram paramater1 
      #your other command
   done < $1;

将上述文件保存为prog.sh之类的任何名称,然后赋予执行权限并使用参数

运行ur程序
chmod u+x prog.sh
./prog.sh inputfile.txt inputFileInside.txt

这里$ 1是inputfile.txt,$ 2是inputFileInside.txt

答案 1 :(得分:0)

{{1}}

这将:

  • 输入文件&#34; inputfile.txt&#34;逐行
  • 每行将在读取时分配给$ line
  • 将该行回显到&#34; inputFileInside.txt&#34;覆盖其中的任何先前信息
  • run&#34; ./ myprogram ...&#34;
  • 然后只运行&#34; sudo ...&#34;如果&#34; ./ myprogram ...&#34;成功了
  • 转到下一行。

确保行尾反斜杠(\)后面没有空格(空格)。