OS X에서 터미널을 사용하여 파일에서 텍스트를 찾고 해당 일치하는 줄만 유지하는 방법은 무엇입니까?

OS X에서 터미널을 사용하여 파일에서 텍스트를 찾고 해당 일치하는 줄만 유지하는 방법은 무엇입니까?

저는 터미널과 명령줄을 처음 사용하는데, 제가 알 수 있듯이 grep은 파일에서 특정 텍스트 문자열을 검색하는 데 적합한 도구인 것 같습니다.

대용량 텍스트 파일이 많은 폴더가 있는데 각 파일에서 특정 문자열(예: "/foobar")이 포함된 줄만 유지하고 싶습니다. 예:

문서 내용:

lorem ipsum
trololo /foobar abc
dolor sit
/foobar def

그 후에는 다음과 같아야 합니다.

trololo /foobar abc
/foobar def

명령이 다음과 같은 것 같아요

grep -wE "(/foobar)" 

하지만 이 줄을 유지하고 현재 폴더에 있는 모든 파일에 대해 이 작업을 수행하도록 명령에 지시하는 방법을 모르겠습니다.

이 작업을 수행하기 위해 grep을 사용하시겠습니까 find? 아니면 grep에 자체 기능이 있습니까? 그것은 다음과 같습니다:

find ./* -exec do grep stuff here

답변1

grep파일의 패턴과 일치하는 행만 발견되며 파일은 변경되지 않습니다. sed찾기 모드를 사용하여 파일을 변경할 수 있습니다 .

sed '/\B\/foobar\b/!d' filename

/foobar파일에서 일치하는 행이 표시됩니다 . 파일의 변경 사항을 현재 위치에 저장하려면 이 -i옵션을 사용하십시오.

sed -i '/\B\/foobar\b/!d' filename

당신은 또한 그것을 사용할 수 있습니다 find:

find . -type f -exec sed -i'' '/\B\/foobar\b/!d' {} \;

관련 정보