ファイルに追加する代わりにファイルの内容を上書きし続ける方法

ファイルに追加する代わりにファイルの内容を上書きし続ける方法

ファイルに書き込む前にファイルの内容を消去するには?たとえば、

echo one > filename.tmp
# filename.tmp now contains "one"

echo two > filename.tmp
# filename.tmp should now contain "two", not "one" and "two"

私の目標は次のとおりです

  1. リスナーの開始

    $ nc -l 7007 > /var/tmp/test.log
    
  2. データを送信

    $ telnet localhost 7007
    hi
    second_word
    
  3. テストファイル

    $ cat /var/tmp/test.log
    second_word
    

私は「hi」がログに表示されたくありません。私はそれを「second_word」に置き換えたいと思います。

ベストアンサー1

ncはそのオプションを提供していないので、新しいファイルを消去して書き込むには別のプログラムが必要です。

nc -l 7007 | while true; do
    while read line; do
      echo "$line" > /tmp/test
    done
done

ファイルパスを許可する別のスクリプトで、パイプの後ろのすべての内容を保存できます。

最後の行を保存してください。

while true; do
    while read line; do
        echo "$line" > $1
    done
done

もしそうなら、とても簡単です。

nc -l 7007 | save-last-line.sh /var/tmp/test.log

$1書き込み可能であることを確認し、指定されていない場合は使用方法を表示するためにチェックを追加する必要があります$1

おすすめ記事