使用Bash更改文件中的单个单词

时间:2013-07-09 14:19:53

标签: bash

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

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

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

    #!/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" 然后在行中n = $(($ n + 1))然后继续直到文件结束并且启动它(java ic.java)。

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

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

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

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

只要new不包含/(斜杠)字符或任何其他会混淆sed的特殊字符,就会出现这种情况。

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

当然,该代码片段只会重复修改同一个文件,这可能没什么用处,但是你明白了。