sed 特定の位置の行をすばやく削除するために使用します
sed '1d'
sed '5d'
しかし、ファイルの最後の行を削除したいのに行数がわからない場合はどうすればよいでしょうか(使用wcしていくつかのトリックを取得できることはわかっています)。
現在、回避策を使用しheadてtail組み合わせて使用wcしています。ここで簡単なねじれはありますか?
headし、tailあなたは別の味のを知っていますか?
sed 特定の位置の行をすばやく削除するために使用します
sed '1d'
sed '5d'
しかし、ファイルの最後の行を削除したいのに行数がわからない場合はどうすればよいでしょうか(使用wcしていくつかのトリックを取得できることはわかっています)。
現在、回避策を使用しheadてtail組み合わせて使用wcしています。ここで簡単なねじれはありますか?
headし、tailあなたは別の味のを知っていますか?
回答:
sed $は最後の行なので、最後の行を削除するには:
sed '$d' <file>
sed -i '$d' <file>ファイルをその場で編集するために使用します。
最後の行の$:
sed '$d' file
sed '$d' file; sed '$d' file
sed '$d' file実際にはファイルを変更しません。最後の行を除いて、ファイルの内容を出力するだけです。そのsed '$d' file; sed '$d' fileため、ファイルの内容を2回印刷し、そのたびに最後の行を削除します。の最後の2行の削除sed '$d' fileはに相当しますsed '$d' file | sed '$d'。
sed -n '1{h;n;}; $q; x; p;'。私たちにできることはできないとふざけていたsed '$-1,$d'。
cat file.txt | head -n -1 > new_file.txt
最後の行に依存し、それはそう、注意してくださいfile.txt(これはで終わる場合EOF、又は\n、その後EOF)のライン数は、new_file.txt(同じであってもよいfile.txt(何がある場合、これは起こりません。このコマンドの後に)\n、いずれの場合に- )最後の行の内容が削除されます。
また、2番目の(中間)ファイルを使用する必要があることに注意してください。猫と同じファイルにリダイレクトする場合、それを消去します。
head -n -1 file.txt > new_file.txt。ただし、負のカウントhead -nは、の一部の実装でのみ使用できますhead。たとえば、FreeBSDやBusyBoxバージョンでは動作しませんhead。
head -n -1 file.txt > new_file.txtました。2つのコメント(同じ行数、および同じファイルで消去)に関しては同じように機能します。否定的な議論に関しては、そのような違いはUnix間で時々発生し、あなたはそれが完全に同じコマンドであると期待するので、しばしばイライラします(そしてなぜあなたはそうしないだろう-同じ名前と目的!)-とにかく、良いポイント。(私はDebianを使用しています。)
head --lines=-1。SLES11SP2-system(coreutils-8.12-6.23.1)のheadのマンページで最初にこの可能性に出くわしました
tailそして、headの一部であるcoreutils(少なくともRPMベース・システムの場合)-rpm。
coreutilsの変更ログによると、この構文はcoreutils-version 5.0.1以降でサポートされています
悪いニュース:RH5-manページによると、このオプションは説明されていません
朗報:RH5で動作します(したがって、少なくとも現在のバージョンのRH5で動作します)。
rpm -q coreutils CentOS 5.8で)を表示:coreutils-5.97-34.el5_8.1
RH5.5かどうかはわかりません。既にそれをサポートするcoreutils-versionがあります。しかし、とにかく5.5は廃止されました。
sed '$d' ~/path/to/your/file/name
sed -i '' -e '$ d' ~/path/to/your/file/name
headし、tail...