" 1"
파일의 각 줄 끝에 문자열을 추가 해야 합니다 . 다음 두 명령을 실행하면 빈 파일이 생성됩니다.
awk '{ print $0 " 1" }' < file.txt > file.txt
사용sed
sed 's/$/ 1/' file.txt > file.txt
여기서 시도할 때 어떤 오류가 발생합니까? 조언해 주실 수 있나요? Mac 터미널에서 이 명령을 실행하고 있습니다.
답변1
GNU sed
솔루션에는 인라인 편집이 필요합니다 -i
.
sed -i 's/$/ 1/' file.txt
(BSD의 경우 sed
필요 sed -i ''
)
에서는 awk
이 문제를 해결하려면 임시 파일을 사용해야 합니다.
awk '{ print $0 " 1" }' file.txt > tmp && mv tmp file.txt
실제로 sed
임시 파일도 생성되지만 -i
파일이 처리되는 경우도 있습니다.
문제는 다음과 같습니다 awk '{ print $0 " 1" }' < file.txt > file.txt
.
리디렉션은 awk
제어권을 얻기 전에 수행됩니다. > file.txt
파일이 잘립니다. 터미널에서 이것을 시도해 보세요:
>file
file
파일에 이전 내용이 있더라도 크기는 0이 됩니다. 따라서 awk
이 파일에서는 데이터를 읽을 수 없습니다. 와 같은 문제입니다 sed
.
\r
개행 문자를 사용한 최종 솔루션:
perl -pi -e 's/\r\n|\n|\r/ 1\n/g' file.txt