• ベストアンサー

シェルでファイルの最下行を削除する方法

シェルでファイルの最下行を削除する方法 シェルで、ファイルaaa.txtの最下行を削除したいです。これを1行で実現したいです。 exには-cってオプションがあるので、ex -c '$d' aaa.txt などと試してみましたがダメでした。 ;(コロン)や&&でつなぐのは、1行ではないって事でお願いします。 >cp aaa.txt tmp && sed '$d' tmp >aaa && rm tmp #こういうのは無しって意味です。 事前にスクリプトや、それ専用のバイナリを用意しておくのも無しでお願いします。なるべく汎用的な どこのUNIXにでもあるようなコマンドで実現したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

パイプが良いのかどうか書いてないなと思ったのですが、 >ターミナルにその1行をコピペするだけにしたかったんです。でもってそこはrootで且つrootにsuできない環境でして、全部sudoで作業してもらおうと思ってまして。 と言うことであれば、 echo '1,$-1wq' | sudo ed aaa.txt 質問は、やりたいこと(直面している問題)をストレートに書いた方が良いですよ。

kingfruits
質問者

お礼

notnotさん、ご回答ありがとうございました。

その他の回答 (1)

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

なぜ1行でないと駄目なのか? そう言う課題なのですか? その制約がなぜあるのかがさっぱり理解できませんね。 ま、wcとheadを組み合わせれば出来るとおもうけど。

kingfruits
質問者

補足

SaKaKashiさん、ご回答ありがとうございます。 >なぜ1行でないと駄目なのか? 人にお願いしてオペレーションをしてもらいたい境遇でして。 とあるファイルの最下行を消すにあたって、なるべく説明を少なくしたかったんです。 ターミナルにその1行をコピペするだけにしたかったんです。でもってそこはrootで 且つrootにsuできない環境でして、全部sudoで作業してもらおうと思ってまして。 で、考えてみたら案外とイイのが浮かばなくてですね。今一度よく考えると;や&&でつながないでってのは、目的から言うと不要な縛りでした。突っ込まれて気がつきました。 >そう言う課題なのですか? 課題といいますか、「できるかな?」と疑問に思いまして。 >ま、wcとheadを組み合わせれば出来るとおもうけど。 >head -n `wc -l aaa.txt|awk '{print $1 -1}'` aaa.txt wcとheadの組み合わせですと、こんな感じですかねぇ。しかし、これを元のファイルaaa.txtに反映させるには、やっぱし;や&&でつながないとダメですかね。しかも一時ファイルを使わないと無理ですかねぇ。一時ファイルって、超個人的趣味なんですけど、嫌いなんですよね。

関連するQ&A