シリアル入力(GPSアンテナ)からの情報ストリームがあり、その情報を各入力(この場合は毎秒)からテキストファイルに出力したいが、>のようにファイルに追加しません。初期オーバーレイ最新情報のみが表示されるように毎秒上書きしたいと思います。
私は\ rを試してbashでトリックをしましたが、出力ファイルはありません。
cat /dev/ttyACM0 | grep --line-buffered -E "GNGGA" | awk 'BEGIN {FS=","};{printf "%s%s\t\t%s%s\t\t%s%s\t%s%s","Time= ",$2,"Lat= ",$3,"Lon= " ,$5,"Alt= " ,$10; fflush(stdout) }' > somefiles.txt
これには、初期入力、1行に集中するためのgrep、必要な情報の特定の部分を取得するためのawkが含まれます。これは私が知っている限り、適用範囲の問題には影響しません。
Time= 155325.00 Lat= 7428.77433 Lon= 82845.15963 Alt= 21.5
まず、somefiles.txtの出力を上書きしてから停止し、コマンドを再実行するまで追加します。
それでは、最新の入力をテキストファイルに1行だけ表示する方法はありますか?
ありがとう
ベストアンサー1
あなたはできますprint
またはprintf
直接ファイルとしてその中にawk
入れ、各書き込みの後に閉じます。awk
次回の印刷時に再開して切り取ります。
awk -vfile=test.out '{print $0 > file; close(file)}'
(厳密に言えば、ここに競合状態があり、他のプロセスがファイルを読み取ろうとします。ただ切り取りと書き込みの間にあるため、空のように見えます(またはより悪いが部分的ではありません)。 )