제목 내용: 1sed
에서 읽는다고 가정하면 출력이 텍스트 파일이 될 수 있습니까? 분명히 말하면 와 같은 셸 연산자를 사용하거나 와 같은 도구를 사용하여 출력을 텍스트 파일에 저장하는 것에 대해 말하는 것이 아닙니다 . 여기서 질문은 다음과 같습니다.STDIN
sed
>
>>
tee
sed
홀로출력물을 텍스트 파일 형태로 제작할 수 있나요? 그렇다면 어떤 상황에서 제작되나요?
1: 이는 이를 지원하는 구현을 사용하여 텍스트 파일을 내부에서 편집하는 것을 배제하기 위한 것입니다.
답변1
예, w
명령을 사용하거나 명령 w
의 플래그를 s
모두 사용하십시오.POSIX에 의해 지정됨.
예를 들어,
sed -n 'w output.txt'
표준 입력에 입력된 모든 내용은 sed
에 기록되지만 표준 출력 output.txt
에는 아무것도 출력되지 않습니다 (이 옵션 sed
덕분에 ). -n
이는 패턴 공간을 쓰기 전에 패턴 공간에서 작동하기 위해 다른 명령과 함께 사용할 수 있습니다.
몇 가지 경고 및 제안:
파일 이름이 공백으로 시작하는 경우 접두사를 사용하십시오 ./
.
sed -n 'w ./ output with blanks.txt'
sed
파일 이름에 개행 문자 POSIXly가 포함된 경우 백슬래시로 이스케이프할 수 있습니다. 단, 모든 구현 에서 작동하지는 않습니다 (특히 GNU sed
또는 busybox 에서는 작동하지 않음 sed
).
sed -n 'w ./output\
with\
newline.txt'
백슬래시 문자가 포함된 경우 일부 구현에서는(위의 POSIX는 파일 이름에 줄 바꿈을 지원함) 백슬래시를 사용하여 이스케이프해야 합니다.
sed -n 'w file\\with\\backslash.txt' # POSIX
sed -n 'w file\with\backslash.txt' # GNU
또한 입력이 비어 있거나 명령이 w
실행되지 않더라도 출력 파일은 다음과 같이 생성되거나 잘립니다.
sed 'd;w file'
또는
seq 20 | sed '/21/ w file'
awk
이러한 문제를 피하기 위해 대신 사용할 수 있습니다.
FILE=arbitrary-file-name awk '/100/ {print > ENVIRON["FILE"]}'