일치하는 패턴이있는 행을 제외한 모든 행을 제거하고 싶습니다.일치하는 패턴 행 모범 사례 (sed)를 제외한 모든 행 제거
sed -n 's/matchingpattern/matchingpattern/p' file.txt
하지만 일치하는 패턴 자체에 패턴과 일치하는 이름을 바꿀 때문에 난 그냥 궁금 해서요 :
이것은 내가 그것을 한 방법이다. 여기 낭비처럼 보입니다.
더 좋은 방법이 있나요?
일치하는 패턴이있는 행을 제외한 모든 행을 제거하고 싶습니다.일치하는 패턴 행 모범 사례 (sed)를 제외한 모든 행 제거
sed -n 's/matchingpattern/matchingpattern/p' file.txt
하지만 일치하는 패턴 자체에 패턴과 일치하는 이름을 바꿀 때문에 난 그냥 궁금 해서요 :
이것은 내가 그것을 한 방법이다. 여기 낭비처럼 보입니다.
더 좋은 방법이 있나요?
sed '/pattern/!d' file.txt
그러나 여기서는 grep
을 다시 만들 예정입니다.
이 당신을 위해 작동 될 수 있습니다
sed -n '/matchingpattern/p' file.txt
/.../
이 경우 p
부착 작업을 가질 수있는 주소입니다.
sed를 사용하는 대신 복잡한 grep을 사용하십시오.
grep matching_pattern file
이렇게하면 원하는 결과를 얻을 수 있습니다.
+1 '올바른 도구'. 그러나 sed는 그 자리에서 파일을 수정할 수 있습니다. –
grep은 확실히 빠릅니다. 왜냐하면 훨씬 빠릅니다.
GREP을 사용하여 내가 함께 일하고 있어요 데이터 세트의 염색체 6에 대한 모든 게놈 시퀀스 데이터를 추출 :
$ time grep chr6 seq_file.in > temp.out
real 0m11.902s
user 0m9.564s
sys 0m1.912s
나오지도에 비해 :
$ time sed '/chr6/!d' seq_file.in > temp.out
real 0m21.217s
user 0m18.920s
sys 0m1.860s
가 나는 배와 ~ 같은 값마다 반복했다.
예. 그러나 sed는 grep에없는이 멋진 깃발을 가지고 있습니다. sed -i '/ pattern /! d'파일 이름 보다 쉽습니다. grep 'pattern'filename> filename.tmp && mv filename.tmp filename – Geeklab
경고 : 결과를 인쇄하지 않으려면 --quiet 플래그를 제공했습니다. 터미널에, 깨닫지 못하고 -i는 이미 그 자체로 달성합니다. 즉, 패턴과 일치하는 모든 라인이 삭제되었습니다. – EriF89