2013-07-09 2 views
1

나는 file.java를 n 번 열고 열 수있는 아주 간단한 bash 파일을 작성하려고합니다.Bash를 사용하여 파일에서 한 단어 바꾸기

내가 원하는 수정은 단일 번호의 단일 (또는 두) 행의 변경 일뿐입니다.

나는 추적 코드와 함께이 작업을 수행하려고 : 내가 (합니다 ("$n" 및 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 + 1)) 행의 ​​다음 파일의 끝까지 가서 (자바 ic.java) lounch.

나는 내가 같은 것을 사용할 수 있습니다 알고

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

아니요. 수정해야하기 때문에 새 파일을 읽은 다음 계산을 수행하고 결과를 저장해야합니다. 이후에이 초크를 다시 시작하면 'sed'와 프로그램을 넣습니다. –

관련 문제