파일 2의 파일 1에 있는 동일한 줄을 조건으로 바꿉니다.

파일 2의 파일 1에 있는 동일한 줄을 조건으로 바꿉니다.

파일 1:

19a9s
c9019
5777

파일 2:

99a9s
89019
10919

예상 출력

19a9s
89019
5777

그래서 그것은 letter 로 시작합니다 file 1. 줄이 문자로 시작하는 경우를 조건으로 사용하고 싶기 때문에 두 번째 파일에서 바꾸고 싶습니다.line#2ccfile 2

다음을 시도했지만 예상한 결과를 얻지 못했습니다.

awk '
    NR == FNR{         #for lines in first file
        S[NR] = $0     #put line in array `S` with row number as index 
        next           #starts script from the beginning
    }
    /^c/{$0=S[FNR]}{             #for line stared with `c`
        $0=S[++count]  #replace line by corresponded array element
    }
    1                  #alias for `print $0`
    ' file2 file1

답변1

awk '
    NR == FNR{         #for lines in first file
        S[NR] = $0     #put line in array `S` with row number as index 
        next           #starts script from the beginning
    }
    /^c/{$0=S[FNR]}{             #for line stared with `c`
    }
    1                  #alias for `print $0`
    ' file2 file1

답변2

얼마나 멀리 갈 것인가?

paste file[12] | sed 's/^c[^   ]*      //; t; s/       .*$//;'
19a9s
89019
5777

이해합니다?

관련 정보