주어진 파일 1...
2/26a- 6
23/26a- 20z
23/26A-18
그리고 파일 2...
2/26a-6
23/26a- 20Z
23/26A-18
25/2a -18
22/34B-19
파일 2에서 파일 1의 내용을 검색하는 방법은 무엇입니까? 여기서 출력은 다음과 같아야 합니다.
2/26a-6
23/26a- 20Z
23/26A-18
(따라서 정확한 일치는 아니지만 일부 공유된 내용입니다.) 일치 항목은 대소문자를 구분해야 합니다.
답변1
당신을 위한:
tr -d " \t\r" < file1 > X
tr -d " \t\r" < file2 > Z
그런 다음:
grep --ignore-case -Fxf X Z
완벽한!
답변2
file1의 내용을 수정하여 하나 이상의 공백 문자 시퀀스를 0개 이상의 공백 문자를 나타내는 정규식으로 바꿀 수 있습니다.
sed 's/[[:space:]]\{1,\}/[[:space:]]*/g' file1
2/26a-[[:space:]]*6
23/26a-[[:space:]]*20z
23/26A-18
그런 다음 이를 대소문자를 구분하지 않는 grep의 패턴 파일로 사용합니다.
sed 's/[[:space:]]\{1,\}/[[:space:]]*/g' file1 | grep -if- file2
2/26a-6
23/26a- 20Z
23/26A-18
참고: 이 방법은 항목에 file1
다른 특수 문자가 포함되어 있지 않은 경우에만 작동합니다. 만약 그렇다면 적절하게 이스케이프 처리해야 합니다.