sed가 출력을 파일로 저장할 수 있습니까?


33

> 할 수있어.

echo "text" > file

tee 할 수있어.

echo "test" | tee file 

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


여기에 질문을 게시하기 전에 직접 답을 찾으십시오. 사용자에게 가장 먼저 묻는 것은 게시하기 전에 검색하고 조사 하는 것입니다. 당신이해야 할 일은 다른 프로그램 과 마찬가지로 실제로 사용할 sed '' file > newfile수 있다는 것을 >알았을 것 sed입니다.
terdon

1
여전히 >연산자를 사용하고 있습니다. 대신 사용할 수있는 sed 명령이 있는지 관심이있었습니다. 그러나이 질문이 너무 나쁘면 삭제하겠습니다.
Folatt

아 맞아 자, 그것은 매우 다른 질문입니다. sed -i답변 을 수락 했으므로 질문을 수정하고 그 후의 내용을 명확하게 설명하겠습니다.
terdon

나는 "받아 들여지는 sed 같은 데이터 리디렉션 것은 아닙니다 tee>될 운명이 (있다)".
Folatt

답변:


49

tee와>는 리눅스에서 데이터 리디렉션에 사용되기 때문에 데이터 리디렉션에 사용될 수 있습니다.

반면에 sed는 스트림 편집기입니다. sed는 데이터 리디렉션을위한 것이 아니며>를 의미합니다. 그러나 명령을 함께 사용하여 그렇게 할 수 있습니다.

티를 사용하거나 sed와 함께>

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
감사. 당신은 내 질문을 이해했습니다. 답은 '아니요'입니다. 내가 생각 sed그것은 또한으로 백업 파일을 만들 수 있기 때문에 그것을 할 수 어쩌면 자신의 것에 -i.bak옵션을 선택합니다.
Folatt

2
옳은. 또한 -i.bak는 고정 옵션이 아니며 백업 파일에 원하는 확장명을 사용할 수 있습니다. 예를 들어. -i.log도 작동합니다. :)
ankidaemon

나는 실제로 echo "test" | dd of=file status=none숨겨져있는 출력 리디렉션을 사용하지 않고 에코의 출력을 억제하고 2> /dev/null대신 sed의 제한을 요구하는 것을 추가하고 싶습니다 . sed가 파일에 줄을 추가 할 수있어 sed가 티가 할 수있는 일 등을 할 수 있다는 인상을주었습니다.
Folatt

11

sedw필요한 것을 수행 할 수 있는 명령이 있습니다.

w 파일 이름

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

sed 'w file'자체적으로와 동일한 효과를 갖습니다 tee file. 다른 sed 명령이 있으면 w마지막을 넣으십시오 .

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

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


0

ankidaemon이 sed 출력을 파일에 저장하는 방법을 올바르게 지적했습니다. 파일에서 일부 작업을 수행하는 경우 즉, 바꾸기를 수행하고 출력을 동일한 파일에 저장하고 싶다고 추가하고 싶습니다. 내부 편집을 가능하게 하는 -i플래그가 sed있습니다. 그러나이 과정에서 백업 파일이 생성됩니다. 필요하지 않은 경우 빈 파일 이름을 -i플래그에 전달하면됩니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.