私はsed
を使用して、特定の位置の行をすばやく削除します
sed '1d'
sed '5d'
しかし、ファイルの最後の行を削除する必要があり、行数がわからない場合(wc
と他のいくつかのトリックを使用してそれを取得できることはわかっています)。
現在、head
とtail
を組み合わせた回避策をwc
と組み合わせて使用しています。ここで簡単なひねりはありますか?
sed $
は最後の行なので、最後の行を削除します。
sed '$d' <file>
最終行の$:
sed '$d' file
cat file.txt | head -n -1 > new_file.txt
注意してください、file.txt
の最後の行によっては(EOF
、または\n
の後にEOF
で終わる場合)、new_file.txt
の行数は(file.txt
と)同じかもしれませんこのコマンドの後(これは\n
がない場合に発生します)-いずれの場合も、最後の行の内容は削除されます。
また、2番目の(中間)ファイルを使用する必要があることに注意してください。猫と同じファイルにリダイレクトする場合は、それを消去します。
head --lines=-1
。私は最初に、SLES11SP2システム(coreutils-8.12-6.23.1)のヘッドのマンページでこの可能性に出くわしました
tail
およびhead
はcoreutils
- 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です。
sed '$d' ~/path/to/your/file/name
sed -i '' -e '$ d' ~/path/to/your/file/name