我尝试编写一个非常简单的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
值(如示例中所示),我该怎么做?
非常感谢你的帮助!
答案 0 :(得分:1)
只要new
不包含/
(斜杠)字符或任何其他会混淆sed
的特殊字符,就会出现这种情况。
for n in "1" "2" "3" "4.5"
sed -i "m-th_row/old/$n/" ic.java
done
当然,该代码片段只会重复修改同一个文件,这可能没什么用处,但是你明白了。