Linux에서 파이프로 구분된 파일에서 일반 텍스트 파일로 값 가져오기

Linux에서 파이프로 구분된 파일에서 일반 텍스트 파일로 값 가져오기

파이프로 구분된 파일이 있습니다.

찾기.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읽은 전체 줄 수와 현재 파일에서 읽은 줄 수를 각각 보유합니다. 이 변수의 값이 동일하면 첫 번째 파일부터 읽습니다.

관련 정보