lessをファイルに出力する


1

bashをしている間、ファイルの最後の3列を削除しようとしました。

head -n -3ファイル>ファイル

しかし、ファイルは空になります。私はそれを回避することはできますが、それが何を引き起こすのか知りたいのです。

本当にありがとう!


明確にする:あなたheadはあなたの例で使用されているように質問や行で述べられているように列を削除したいですか?
1

回答:


3

そのコマンドが何をするのかを見てみましょう。

  1. > file

    これfileは書き込み用に開き、それを切り捨てます。

  2. head -n -3 file

    これはの最後の3行を除くすべてを読みますfileはい、file手順1で切り捨てたのと同じです。


2

あなたがやろうとしているのはインライン置換ですが、これは回避策がなければ実際には不可能です。元のファイルは、コマンドを送信したときに既に開かれてクリアされているため、コマンドでは上書きされます。

ここにいくつかのアイデアがあります:

  • 一時ファイルを使用する

    head -n -3 file > tmp
    mv tmp file
  • spongefromツールを使用しますmoreutils。これはすべての入力を吸収してからファイルに書き込みます。

    head -n -3 file | sponge file

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.