sed가 출력을 파일에 저장할 수 있나요?

sed가 출력을 파일에 저장할 수 있나요?

>할수있다.

echo "text" > file

tee할수있다.

echo "test" | tee file 

sed위의 방법을 사용하지 않고도 수행할 수 있습니까? 또는를 사용하지 않고 sed명령 출력을 파일에 저장할 수 있습니까?>tee

답변1

tee 및 >는 Linux에서 데이터 리디렉션을 위한 것이므로 데이터 리디렉션에 사용할 수 있습니다.

반면에 sed는 스트림 편집기입니다. sed는 tee 및 >와 같은 데이터 리디렉션에 사용되지 않습니다. 그러나 이를 수행하기 위해 명령 조합을 사용할 수 있습니다.

sed와 함께 tee 또는 >를 사용하세요.

sed 's/Hello/Hi/g' file-name | tee file

또는

sed 's/Hello/Hi/g' file-name > file

-i 옵션과 함께 sed 사용

sed -i 's/Hello/Hi/g' file-name

마지막 것은 리디렉션하지 않지만 파일 자체를 변경합니다.

답변2

sedw원하는 것을 수행하는 명령이 있습니다 .

w 파일 이름

현재 패턴 공간을 파일 이름에 씁니다.

sed 'w file'그 자체로는 와 동일한 효과를 갖습니다 tee file. 다른 sed 명령이 있으면 w마지막에 입력하세요.

sed 's/This/That/;w file'

그러나 이는 -n/--quiet/--silent이 옵션의 영향을 받지 않습니다. 이는 표준 출력으로 가는 내용만 억제합니다.

답변3

ankidaemon이 올바르게 지적했듯이 sed 출력을 파일에 어떻게 저장할 수 있습니까? 파일에 대해 일부 작업(예: 교체)을 수행하고 출력을 동일한 파일에 저장하려는 경우 이를 추가하고 싶습니다. 내부 편집을 가능하게 하는 -i플래그가 있습니다 . sed다만, 해당 접미사를 매개변수로 제공하는 경우에는 그 과정에서 백업 파일이 생성된다. 필요하지 않은 경우 빈 파일 이름을 전달하거나 -i태그를 지정하지 않고 수행할 수 있습니다.

예: sed -i "s/from/to/" file내부 변경 file.

관련 정보