나는 과거에 일반적으로 다음을 사용하여 egrep을 성공적으로 사용했습니다.
egrep -f list_of_patterns big_file_to_look_for_patterns > selected_patterns_from_big_file
그런데 오늘 아침에도 같은 일을 하려고 했는데 계속해서 모든 것을 출력으로 가져오고 있습니다. -> 목록을 통해 제공한 패턴뿐만 아니라 내가 찾고 있는 전체 파일도 출력됩니다.
문서는 여기에서 찾을 수 있습니다:https://filebin.net/ibovbjy68x4a8kez
패턴 목록: "allMAGs_list_85_5_list"
big_file_to_look_for_patterns: "좋은 파일"
grep과 비슷한 문제가 있는 누군가의 이전 게시물을 기반으로 tr '\r' '\n'
캐리지 리턴을 제거하려고 시도했지만 도움이 되지 않았습니다...
미리 감사드립니다
답변1
첫 번째 참고 사항: egrep
더 이상 사용되지 않으며 어느 시점에서 제거될 수 있으므로 grep -E
대신 사용하세요. 이제 문제는 스키마 파일에 빈 줄이 포함되어 있다는 것입니다. 따라서 grep은 모든 행에서 발견된 빈 문자열을 찾으므로 모든 결과가 반환됩니다. 여기서도 같은 내용을 볼 수 있습니다.
$ seq 10 | grep ""
1
2
3
4
5
6
7
8
9
10
파일에서 빈 줄을 제거하고 다시 시도하세요.
sed '/^$/d' allMAGs_list_85_5_list > fixed.list
grep -Ef fixed.list goodfile
다음 명령을 사용하여 원본 목록 파일을 복구할 수도 있습니다.
sed -i '/^$/d' allMAGs_list_85_5_list
아니면 즉시 실행하세요.
grep -Ef <(sed '/^$/d' allMAGs_list_85_5_list) goodfile