지정된 줄을 기반으로 두 파일을 병합합니다.

지정된 줄을 기반으로 두 파일을 병합합니다.

나는 가지고있다파일 1.txt다음과 같습니다.

search
http://google.com
mail
https://gmail.com

파일 2.txt다음과 같습니다.

This is a search tool
This is your mail account

이런 식으로 병합해야합니다파일 1.txt다음과 같이 보일 것입니다 :

This is a search tool
http://google.com
This is your mail account
https://gmail.com

답변1

또한 시도

awk '
NR == FNR   {T[$0]
             next
            }
            {for (t in T) if (t ~ $1) $1 = t
            }
1
' file2 file1
This is a search tool
http://google.com
This is your mail account
https://gmail.com

답변2

사용 awk:

awk 'NR==FNR{ (NR%2? keyword=$0: seen[keyword]=$0 ); next}  
     { for (keys in seen)if ($0 ~ keys) {print $0, seen[keys] }
}' OFS='\n' file1  file2

출력은 다음과 같습니다

This is a search tool
http://google.com
This is your mail account
https://gmail.com

설명하다:

첫 번째 파일 NR==FNR이고 레코드/줄 번호가 NR%2전체 $0줄을 else라는 변수에 저장하는 경우 해당 줄을 찾은 키를 index로 사용하여 이름이 지정된 연관 배열에 추가한 keyword다음 해당 줄을 읽습니다.seennext

...첫 번째 파일이 계속되면 for-loop배열을 반복합니다.변수는 keys배열의 인덱스 요소를 가리키는 데 사용되며 요소가 keys해당 행에서 일치할 수 있는지 확인한 file2다음 print $0해당 키 값을 seen[keys]ewline으로 구분합니다 \n.

관련 정보