다음과 같은 파일이 있습니다.
##Comment A
##Comment B
#Important header
chr1 content a
chr2 content b
chrX content x
#(## 아님) 또는 "chr1"로 시작하는 새 파일에 3행과 4행을 추출하고 싶습니다.
#Important header
chr1 content a
나는 ~하려고 노력한다
grep "^[^##]"
그러나 이렇게 하면 #이 하나만 있는 줄도 제외됩니다. 나는 항상 두 단계로 이를 수행할 수 있다고 생각하지만 더 나은 솔루션을 원합니다! 매우 감사합니다.
답변1
두 패턴을 OR로 연결하는 것은 어떻습니까?
$ grep '^#[^#]\|^chr1' file
#Important header
chr1 content a
또는 ( -e
형식으로POSIX에 의해 지정됨)
$ grep -e '^#[^#]' -e '^chr1' file
#Important header
chr1 content a
답변2
항상 다른 해결책이 있습니다. awk
다음 스크립트를 통해 이를 수행할 수 있습니다 .
awk '{if( ($0~/^#/ && $0!~/^##/) || $0~/^chr1/){print $0}}' file
#
첫 번째 부분은 로 시작하지만 그렇지 않은 경우 줄을 찾고, ##
두 번째 부분은 로 시작하는 줄을 가져온 chr1
다음 결과를 인쇄합니다.