for 루프를 사용하여 tmp 파일의 데이터를 최종 출력 파일에 하나씩 쓰는 방법은 무엇입니까?

for 루프를 사용하여 tmp 파일의 데이터를 최종 출력 파일에 하나씩 쓰는 방법은 무엇입니까?

tmp1몇 줄을 포함 하는 tmp라는 두 개의 파일이 있습니다 tmp2.
tmp1 파일,

1c\  
datafile no. 23  
2c\  
datafile is ok

tmp2 파일,

3c\  
datafile no. 24  
4c\  
datafile is ok

파일(이름 wrong_file)이 있고 tmp 파일에서 해당 파일의 항목을 수정하고 싶습니다.

datafile no. 32  
datafile is ok  
datafile no. 42  
datafile is ok

내 출력 파일( modified_file)은 다음과 같습니다.

datafile no. 23  
datafile is ok  
datafile no. 24  
datafile is ok    

수동으로 수행하는 대신 마지막 tmp 파일로 실행하고 tmp 파일의 데이터를 최종 파일(출력)에 쓰는 for 루프를 사용하고 싶습니다.

열심히 노력했는데,

sed -f tmp1 wrong_file > file1  
sed -f tmp2 file1 > modified_file

답변1

나는 당신이 이것을 할 수 있다고 확신합니다 :

cat ./tmp[12] | sed -f - ./wrong_file >outfile

sed적어도 모든 스크립트 지침이 줄 번호에만 적용된다면 문제가 발생하지 않습니다. 스크립트를 개별적으로 적용할 필요가 없습니다. 모두 함께 연결하고 스크립트를 즉시 실행할 수 있습니다.

그러나 이렇게 해야 하는데 이는 노력이 중복된다는 의미입니다.여기sed임시 파일을 먼저 작성하지 않고 대신 입력에서 변경해야 할 줄을 검색한 다음 스트림의 모든 내용을 sed한 번에 최종 스크립트에 전달하는 스크립트의 복사본입니다 .

{   sed '/^#\.tid\.setnr/!d;=;g;G' |
    paste  -d'c\\\n' - - - ./addfile
}   <./mainfile | sed -f - ./mainfile

출력은 다음을 기반으로 하기 때문에 여기의 샘플 데이터와 다릅니다.다른 문제. 그러나 수정 스크립트를 완전히 작성하는 것을 방지하고 모든 편집 명령을 sed즉시 실행할 수 있는 프로세스로 보냅니다.

sed일반적으로 프로세스는 편집 입력도 처리할 준비가 되어 있으므로 스크립트 입력도 처리할 준비가 되어 있다고 생각할 수 있습니다 . -

관련 정보