2014-11-04 1 views
0

grep을 사용하여 한 행의 단어를 제외하는 방법에 대한 조언이 필요합니까?Grep 또는 egrep을 사용하여 행의 텍스트를 제외하십시오.

grep -v '1.942134' results.tbl | egrep '*.fits' results.tbl 

확장 .fits 모든 문자열을 표시하지만 "1.942134"문장에서 제외하려고하지만 여전히 전체 라인을 반환

는 그래서 노력했다.

어떤 조언이 필요합니까?

+0

'grep'과 같이 간단해야합니다 .fits 'results.tbl | grep -v '1.942134'. 파이프는 입력이 이전 명령의 출력이기 때문에 파일을 다시 제공 할 필요가 없다는 것을 의미합니다. – fedorqui

답변

0

sed으로 연결해야합니다. Sed는 많은 능력을 가지고 있으며, 그 중 일부는 다른 것보다 더 복잡합니다. 그러나 가장 좋은 것 중 하나는 정규 표현식 대체입니다.

grep '\.fits$' | sed 's/1.942134//' 
+0

grep 패턴이 너무 일치합니다. '. *'에 대한 이유가 없기 때문에''\ .fits ''를 추가하지 않아도됩니다 (".fits"로 시작하는 줄이 일치하지 않는 한). OP는 또한 eol 앵커를 나타내지 않았다. 아마도 sed에 단어 경계를 추가하여 단어를 일치시킬 수도 있습니다. –

+0

'.fits '가'$'줄 끝 부분에있을 것이라고 어떻게 확신합니까? OP는 그것에 대해 아무 말도하지 않습니다. – Jotne

0

또는 당신은 당신이 모두 sedawk에서 .을 탈출해야한다 그렇지 않으면 그냥 모든 문자를 의미합니다 awk

awk '/\.fits/ && !/1\.942134/` results.tbl 

PS를 사용할 수 있습니다.

관련 문제