首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash:迭代地更改文件中的一行,并将file.txt传递给程序

Bash:迭代地更改文件中的一行,并将file.txt传递给程序
EN

Stack Overflow用户
提问于 2014-01-04 04:35:33
回答 2查看 245关注 0票数 0

我试图使这个非常简单的bash程序必须执行以下操作:

1)修改文件n次:每次我必须在文件的一行中更改一个单词(行为11)时,我知道下面的命令可以用另一个命令替换程序特定行中的一个单词:

代码语言:javascript
复制
 sed -i "11s/1/$n/" IC_masslessPlanetesimal.java

如果我执行上面的命令,我只能修改file.java一次,因为在for循环的第二次迭代中,我的单词与第一次迭代中的单词不一样:我从第11行中的1开始,而在第一次迭代中我用$n (即等于2)进行修改,但是现在可以如何修改sed命令以再次更改单词(现在等于2),例如,在第11行中有3吗?

2)编译文件java:可以;

3)修改file.txt:与1)相同的问题是,我想用for循环或类似的方法迭代地修改一行中的单词;

4)将其传递给可执行文件:这是第二个问题。我已经修改了param.txt文件,现在我想将它读入一个名为exec的可执行文件。如果我从终端机做这件事,我必须启动主管。使用命令./exec进行编程,之后我必须从屏幕上编写file.txt名称。现在是否有可能从bash启动一个程序,并使用它读取file.txt?我试着:

代码语言:javascript
复制
 sed -i "13s/Zero/$n/" param.txt
 ./exec < param.txt   

该脚本必须将第13行从Zero更改为$n in param.txt ,如何使用带有特定param.txt文件的命令./exec启动exec程序。

代码语言:javascript
复制
#!/bin/bash

n=0
for n in "2" "3" 
do
  sed -i "11s/1/$n/" IC_masslessPlanetesimal.java
  javac IC_masslessPlanetesimal.java  
  java IC_masslessPlanetesimal
 sed -i "13s/Zero/$n/" param.txt
 ./exec < param.txt   
done

非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2014-01-04 05:16:02

使用变量来跟踪以前的n值。它将涵盖前3点。

代码语言:javascript
复制
#!/bin/bash
n=0
prev=1
for n in "2" "3"
do
  sed -i "11s/$prev/$n/" IC_masslessPlanetesimal.java

  javac IC_masslessPlanetesimal.java  
  java IC_masslessPlanetesimal
  sed -i "13s/Zero/$prev/" param.txt
  echo "param.txt" | ./exec   
  prev=$n
done
票数 2
EN

Stack Overflow用户

发布于 2014-01-04 17:24:59

我用一种非常简单(但不是很正式)的方式解决这个问题:

我转到file.f90并重新定义它,以便将文件编译时必须读取的shell命令更改为file.txt。

现在,bash非常简单:

代码语言:javascript
复制
 #!/bin/bash


    touch IC_masslessPlanetesimal.java
    touch param.in

m=1
n=0
for n in  "2" "3" 
do
 sed -i "11s/$m/$n/" IC_masslessPlanetesimal.java
 javac IC_masslessPlanetesimal.java  
 java IC_masslessPlanetesimal
 sed -i "13s/$m/$n/" param.in 
 ./swifter_symba_omp # now i just launch the modify version of ./exec that read the files in which i declare the input to the ./exec
 m=$n
done

非常感谢你的回答,评论和建议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20916938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档