다음과 같은 항목이 포함된 파일이 있습니다.
chr1 740678 740720
chr1 2917480 2917507
or로 시작하는 항목을 제거하고 or 등 으로 시작하는 항목은 chr1
유지하고 싶습니다 . 그것을 사용하면 chr11 또는 chr19로 시작하는 다른 모든 항목이 제거됩니다. 사용할 수 있는 다른 정규 표현식이 있나요?chr11
chr19
grep -v "chr1"
답변1
먼저, 첫 번째 문자열을 포함하지만 첫 번째 문자열이 아닌 줄을 ^chr1
찾는 것을 피하기 위해 줄의 시작 부분( )에만 일치하도록 정규식을 고정해야 합니다 (예를 들어 주석이 달린 VCF 파일에서 쉽게 발생할 수 있음). 다음으로 (GNU) 옵션을 chr1
사용할 수 있습니다 .-w
grep
-w, --word-regexp
Select only those lines containing matches that
form whole words. The test is that the matching
substring must either be at the beginning of the
line, or preceded by a non-word constituent
character. Similarly, it must be either at the end
of the line or followed by a non-word constituent
character. Word-constituent characters are
letters, digits, and the underscore. This option
has no effect if -x is also specified.
이를 지원 하지 않으면 grep
다음을 사용하십시오.
grep -v '^chr1\s' file
공백(탭 및 공백 포함) 과 일치하므로 \s
공백 문자로 시작하고 chr1
그 뒤에 공백 문자가 오는 모든 줄은 제외됩니다.
답변2
chr1 뒤에 공백이나 탭이 있는 것 같습니다. chr1
따라서 , 뒤에 공백 문자를 검색할 수 있습니다 . 이 시도:
grep -v "chr1\s\+"