다음 구조의 파일이 있습니다.
name #chrom chromStart chromEnd encodeLabel description
EH38E1310153 chr1 181251 181601 pELS EH38E1310153
EH38E1310154 chr2 190865 191071 dELS EH38E1310154
EH38E1310158 chr3 778562 778912 PLS EH38E1310158
EH38E1310159 chr4 779086 779355 PLS EH38E1310159
EH38E1310160 chr8 779727 780060 pELS EH38E1310160
EH38E1310162 chr17 790397 790626 CTCF-only EH38E1310162
EH38E1310164 chr18 807736 807916 dELS EH38E1310164
EH38E1310165 chr19 812113 812266 dELS EH38E1310165
chr1
나는 오직 and 라인만 필요합니다. 지금까지 시도한 내용은 다음과 같습니다.
grep 'chr1' filename.txt > Output.txt
그러면 다음 줄이 표시됩니다.
EH38E1310153 chr1 181251 181601 pELS EH38E1310153
EH38E1310162 chr17 790397 790626 CTCF-only EH38E1310162
EH38E1310164 chr18 807736 807916 dELS EH38E1310164
EH38E1310165 chr19 812113 812266 dELS EH38E1310165
특정 항목이 필요할 때 기본 grep 검색이 탐욕스러워 보입니다. 난 필요 없어 chr1*
. 나는 -o
플래그를 시도했지만 단지 chr1
. 나는 전체 라인이 필요합니다.
이 문제를 어떻게 해결할 수 있나요?
답변1
grep
"욕심쟁이"가 아닙니다. 라인에서 주어진 패턴을 찾고 패턴이 발견되면 전체 라인을 인쇄합니다.어딘가에온라인. 또는 -o
주어진 경우 일치하는 부분만 인쇄합니다.
표시되는 모든 줄에는 문자열이 포함되어 있습니다 chr1
. 그 중 하나에는 공백이 오고, 세 개에는 다른 것이 옵니다. 그러나 그것은 중요하지 않습니다. 각 줄은 여전히 그 문자열입니다.
줄의 두 번째 필드가 정확히 주어진 문자열인지 확인하려면 해당 필드 기반 텍스트 입력을 처리할 수 있는 awk와 같은 도구를 사용하세요.
예를 들어
awk -v value=chr1 '$2 == value' < filename.txt > Output.txt
답변2
당신은 이것을 시도 할 수 있습니다grep '\<chr1\>' filename.txt > output.txt