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