1

我尝试编写一个非常简单的 bash 文件,允许我打开和修改 n 次 file.java 。

我想要的修改只是单个数字的单个(或两个)行中的更改。

我尝试使用以下代码执行此操作:

    #!/bin/bash

    # commento

    touch ic.java

    touch input

    n=0
    for n in "1" "2" "3" "4.5"
  do
        echo 'import java.io.*;'>ic.java
        echo 'import java.util.*;'>>ic.java
        echo ' '>>ic.java
        echo 'class INITIAL_CONDITION_NORMAL {'>>ic.java
        echo 'public static void main (String args[]) {'>>ic.java
        echo "$n">>ic.java 
        n=$(($n+1))
        echo '....'>>ic.java 
 done 

       java ic.java

如您所见,我必须编写所有文件,并且当我想更改数字时,将"$n" and n=$(($n+1)) 放在行中,然后继续直到文件末尾并启动它(java ic.java)。

我知道我可以使用类似的东西:

sed -i 'm-th_row/old/new/' ic.java

但是如果我想递归地执行此操作(100 次),每次使用不同的new值(如示例中所示)我该怎么做?

非常感谢你的帮助 !

4

1 回答 1

1

As long as new contains no / (slash) character, or any other special character that would confuse sed, this is the sort of pattern you need.

for n in "1" "2" "3" "4.5"
  sed -i "m-th_row/old/$n/" ic.java
done

Of course, that snippet would just modify the same file repeatedly, which probably wouldn't be helpful, but you get the idea.

于 2013-07-09T14:24:58.350 回答