명령을 사용하여 파일 내의 마지막 줄을 삭제할 수 있습니까?

명령을 사용하여 파일 내의 마지막 줄을 삭제할 수 있습니까?

나는 실수로 많은 서버의 /etc/crontab에 라인을 배포했는데 이 라인에 오타가 있다는 것을 발견하여 모든 서버에서 이를 변경해야 합니다.

답변1

또 다른 옵션은 마지막 줄을 삭제하는 것보다 오타를 수정하는 것입니다.

sed -i '$ s/typotext/correcttext/ /var/spool/cron/user

최신 버전의 cron에서는 매우 미세한 변경 사항을 확인하므로 crontab 파일을 직접 편집할 수 있습니다.

답변2

sed가 내부 편집을 지원한다면,

sed -i '$d' file

그렇지 않은 경우 다음과 같은 복합 명령을 사용해야 합니다.

cat file | sed '$d' > newfile; mv newfile file

답변3

사용head

user@host$ cat <<EOF > test.txt
1
2
3
4
EOF
user@host$ head -n -1 test.txt | sponge test.txt
user@host$ cat test.txt
1
2
3
user@host$

답변4

답변은 unix.com의 포럼 기사를 참조하세요.

http://www.unix.com/shell-programming-scripting/25027-delete-last-line.html

sed -e '$d' 입력.파일 > 출력.파일

또는

헤드 -$(( wc -l file | awk '{print $1}'- 1)) 파일

관련 정보