gpt4 book ai didi

java - Bash:迭代更改文件中的一行并将 file.txt 读取到程序

转载 作者:行者123 更新时间:2023-12-02 06:22:12 25 4
gpt4 key购买 nike

我尝试制作这个非常简单的 bash 程序,它必须执行以下操作:

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

 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 吗?我尝试:

 sed -i "13s/Zero/$n/" param.txt
./exec < param.txt

该脚本必须将 param.txt 中的第 13 行从零更改为 $n 如何我可以使用命令 ./exec 启动 exec 程序与特定的 param.txt 文件。

#!/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

非常感谢!!!

最佳答案

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

#!/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

关于java - Bash:迭代更改文件中的一行并将 file.txt 读取到程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20916938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com