파일을 삭제하지 않고 특정 명령 <file.txt> file.txt를 사용하는 방법 [중복]

파일을 삭제하지 않고 특정 명령 <file.txt> file.txt를 사용하는 방법 [중복]

나는 이전에 파일을 그 자리에서 변경할 것으로 예상하면서 이 작업을 수행한 적이 $ tr '\t' ',' <file.txt >file.txt있으며 분명히 리디렉션은 >파일을 읽기 전에 파일을 자릅니다.<

파일을 자르거나 삭제하지 않고 어떻게 파일을 변경할 수 있나요?

답변1

당신은 할 수 없습니다. 리디렉션 >연산자~ 할 것이다파이프라인의 일부로 새로운 빈 파일을 만듭니다. 이 작업을 수행하는 도구(예: sed --in-place)는 새 파일을 생성하고 파일에 쓴 다음 새 파일을 이전 파일 위치로 이동하는 것 같습니다 .

$ ls -i file; sed --in-place 's/foo/bar/' file; ls -i file
266110 file
262180 file

관련 정보