파이프로 구분된 파일이 있습니다.
찾기.txt:
Column1|yellow|value|628291
Column9|red|value|346801
파일.txt:
Yellow
YellowDiamond
Redgold
내가 얻으려고 하는 가치노란색File.txt에 존재하며 파이프로 구분된 파일(예: Lookup.txt)과 정확하게 일치합니다. 출력은 아래와 같이 전체 라인이어야 합니다. File.txt 파일에는 Lookup.txt 파일에서 검색할 값이 있습니다.
awk
, 명령 을 시도했지만 fgrep
예상되는 결과는 다음과 같습니다.
Column1|yellow|value|628291
답변1
grep
귀하의 접근 방식이 작동하지 않는 이유는 무엇입니까?
grep -Fwif File.txt Lookup.txt
유망해보이네요...?
답변2
문자열을 File.txt
연관 배열의 키로 저장합니다 awk
. 대소문자를 구분하지 않고 비교하려면 키를 소문자로 축소하세요.
두 번째 파일을 읽을 때 Lookup.txt
두 번째 필드의 소문자 값이 연관 배열의 키인지 테스트하세요. 그렇다면 전체 행을 인쇄하십시오.
awk -F '|' 'NR == FNR { key[tolower($0)]; next } (tolower($2) in key)' File.txt Lookup.txt
변수 NR
및 는 FNR
읽은 전체 줄 수와 현재 파일에서 읽은 줄 수를 각각 보유합니다. 이 변수의 값이 동일하면 첫 번째 파일부터 읽습니다.