こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

シェルで、ファイルaaa.txtの最下行を削除したいです。これを1行で実現したいです。

exには-cってオプションがあるので、ex -c '$d' aaa.txt などと試してみましたがダメでした。

;(コロン)や&&でつなぐのは、1行ではないって事でお願いします。
>cp aaa.txt tmp && sed '$d' tmp >aaa && rm tmp #こういうのは無しって意味です。

事前にスクリプトや、それ専用のバイナリを用意しておくのも無しでお願いします。なるべく汎用的な
どこのUNIXにでもあるようなコマンドで実現したいです。

投稿日時 - 2010-07-15 20:39:13

QNo.6040900

暇なときに回答ください

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

パイプが良いのかどうか書いてないなと思ったのですが、

>ターミナルにその1行をコピペするだけにしたかったんです。でもってそこはrootで且つrootにsuできない環境でして、全部sudoで作業してもらおうと思ってまして。

と言うことであれば、

echo '1,$-1wq' | sudo ed aaa.txt

質問は、やりたいこと(直面している問題)をストレートに書いた方が良いですよ。

投稿日時 - 2010-07-15 22:22:48

お礼

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

投稿日時 - 2010-07-15 23:46:53

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

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

投稿日時 - 2010-07-15 21:06:15

補足

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に反映させるには、やっぱし;や&&でつながないとダメですかね。しかも一時ファイルを使わないと無理ですかねぇ。一時ファイルって、超個人的趣味なんですけど、嫌いなんですよね。

投稿日時 - 2010-07-15 22:03:40

あなたにオススメの質問