2013-07-09 3 views
1

Я пытаюсь написать очень простой файл bash, который позволяет мне открывать и изменять n раз file.java.изменить одно слово в файле с Bash

Модификация, которую я хочу, - это изменение только одной (или двух) строки одного числа.

Я пытаюсь сделать это с кодом наблюдения:

#!/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 + 1)), затем продолжайте до конца файла и запустите его (java ic.java).

Я знаю, что я могу использовать что-то вроде:

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

, но если я хочу сделать это рекурсивно (в 100 раз) йота каждый раз, когда другое new значение (как в приведенном выше примере), как я могу это сделать?

Большое спасибо за вашу помощь!

+0

Итак, вы просто хотите запустить команду sed для большого количества файлов? – tjameson

ответ

1

До тех пор, пока new не содержит символ / (косая черта) или любой другой специальный символ, который смущает sed, это своего рода шаблон, который вам нужен.

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

Конечно, это фрагмент кода будет просто изменить один и тот же файл несколько раз, что, вероятно, не было бы полезно, но вы получите идею.

+0

Нет, это очень полезно, потому что я должен его изменить, а затем передать новый файл программе, которая ее читает и выполняет расчет, и сохранять результаты, после чего я перезапускаю этот cicle, поэтому в цикл for я помещаю 'sed' и программу –

Смежные вопросы