여러 패턴이 포함된 파일에서 줄 찾기 및 삭제

여러 패턴이 포함된 파일에서 줄 찾기 및 삭제

문자열 목록이 있고 이 문자열이 포함된 파일에서 줄을 찾아 삭제하고 싶습니다. 문자열 목록의 간단한 예가 아래에 나열되어 있습니다.

파일

1월 32,33
2월 7,26
2월 7,27
2월 7,28

이 파일의 간단한 예는 다음과 같습니다.

파일 A

1월 32,33 사랑해요.
2Mo 7,26 좋아해요.
안녕하세요 1,2 별로 흥미롭지 않습니다.
Ab 3,4 나는 바보입니다.

내 예상 결과는 다음과 같습니다.

안녕하세요 1,2 별로 흥미롭지 않습니다.
Ab 3,4 나는 바보입니다.

다음 명령을 사용해 보았지만 불행히도 실패했습니다.

grep -f fileS fileA|awk '{print $0}'

관련 질문을 찾아봤지만 대부분 특정 패턴이 있는 행을 삭제하는 데 중점을 둡니다. 이 문제를 해결하는 방법을 아는 사람이 있나요? 감사해요.

답변1

에서 AWK코드는 다음과 같습니다.

NR == FNR {
    line[$0]++;
    next;
}
!line[$1" "$2]

한 줄로:

awk 'NR == FNR {line[$0]++; next;} !line[$1" "$2]' file_S file_A

답변2

$ grep -vF -f file_S file_A
Hi 1,2  This is not so fun.
Ab 3,4  I am stupid.

이는 문자열을 사용하여 이러한 문자열을 포함하지 않는 행을 가져옵니다 file_S.file_A

-v일치하지 않는 줄이 전달되도록 일치의 의미를 바꾸고 문자열이 다음과 같이 처리되도록 -F지시합니다 .grep고정 문자열정규 표현식보다는.

답변3

awk -F "|" '{if($1 != "1Mo") if($1 != "2Mo" ) { print $0;}}' inputFile > OutputFile

관련 정보