web-dev-qa-db-ja.com

ファイルから最後の行を削除します

私はsedを使用して、特定の位置の行をすばやく削除します

sed '1d'
sed '5d'

しかし、ファイルの最後の行を削除する必要があり、行数がわからない場合(wcと他のいくつかのトリックを使用してそれを取得できることはわかっています)。

現在、headtailを組み合わせた回避策をwcと組み合わせて使用​​しています。ここで簡単なひねりはありますか?

51
mtk

sed $は最後の行なので、最後の行を削除します。

sed '$d' <file>
96
h3rrmiller

最終行の$:

sed '$d' file
32
Guru

cat file.txt | head -n -1 > new_file.txt

注意してください、file.txtの最後の行によっては(EOF、または\nの後にEOFで終わる場合)、new_file.txtの行数は(file.txtと)同じかもしれませんこのコマンドの後(これは\nがない場合に発生します)-いずれの場合も、最後の行の内容は削除されます。

また、2番目の(中間)ファイルを使用する必要があることに注意してください。猫と同じファイルにリダイレクトする場合は、それを消去します。

15
Emanuel Berg

head --lines=-1。私は最初に、SLES11SP2システム(coreutils-8.12-6.23.1)のヘッドのマンページでこの可能性に出くわしました

tailおよびheadcoreutils- rpmの一部です(少なくともrpmベースのシステムの場合)。

Coreutilsの変更ログによると、この構文はcoreutils-version 5.0.1以降でサポートされています

悪いニュース:RH5​​-man-pageによると、このオプションは説明されていません

朗報:それはRH5で動作します(つまり、あなたの場合:動作します-少なくともRH5の現在のバージョンで)。

rpm -q coreutilsは私を表示します(CentOS 5.8上):coreutils-5.97-34.el5_8.1

RH5.5かどうかわかりません。すでにそれをサポートするcoreutils-versionがあります。しかし5.5はとにかくEoLedです。

6
Nils

Linux

$は最後の行、dは削除:

sed '$d' ~/path/to/your/file/name

マックOS

Sed -iと同等

sed -i '' -e '$ d' ~/path/to/your/file/name
2
jasonleonhard