저는 터미널과 명령줄을 처음 사용하는데, 제가 알 수 있듯이 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' {} \;