Grep : 전체 라인 검색 및 바꾸기


13

명령

 grep "foo" myfile.txt

내 파일에서 일치하는 모든 줄을 인쇄합니다.

이제 전체 줄 을 다른 문자열 로 바꾸고 싶습니다 . 어떻게해야합니까?

답변:


13

전체 줄의 하위 문자열을 일치시키는 경우 s정규식과 함께 sed의 명령을 사용 하여 나머지 줄을 정리할 수 있습니다.

sed -i 's/^.*foo.*$/another string/' myfile.txt

또는 c명령을 사용하여 일치하는 줄을 한 번에 바꾸십시오.

sed -i '/foo/ { c \
another string
}' myfile.txt

프롬프트에 여러 줄 명령을 입력하지 않으려면 대신 스크립트에 넣을 수 있습니다.

$ cat foo.sed
/foo/ { c \
another string
}

$ sed -i -f foo.sed myfile.txt

감사! 내가 두 번째 옵션을 사용할 때 내가 얻을 : 나오지도 : -e 표현 # 1, 문자 0 : 타의 추종을 불허하는`{ '
클램프

첫 번째 줄의 끝에 \를 입력 한 다음 Return 키를 눌러야합니다. \가 첫 번째 줄 바꿈을 이스케이프하는 것이 중요합니다. 그런 다음에서 }'별도의 줄에 있는지 확인하십시오 another string. 교체는 두 번째 줄의 모든 것을 포함합니다 }.
쓸모없는

-1

sed의 inplace 기능을 사용할 수 있습니다 .

sed -i -e 's/foo/bar/' myfile.txt

이것은 전체 라인 foobar아닌 모든 것을 대체 할 것입니다 .
Jahid
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.