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