コマンドを使用してファイル内の最後の行を削除することは可能ですか?

コマンドを使用してファイル内の最後の行を削除することは可能ですか?

誤って多くのサーバーの /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)) ファイル

関連情報