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
...