最初のテキストを既に知っていますが、最初のテキストと2番目のテキストを取得して2番目のテキストを作成する方法の最小限のガイドラインを提供するアルゴリズムを知っている人はいますか?
たとえば、「uptime」の出力は次のようになります。
16:18 up 1 day, 12:15, 4 users, load averages: 2.23 2.66 2.53
1分後:
16:19 up 1 day, 12:16, 4 users, load averages: 2.23 2.66 2.53
この場合の唯一の変更は時間です。
すべての形式の出力が許可されます。次の例は、最初の行から2番目の行を作成するために使用される情報を構造化する方法に関する私のアイデアの1つです。
最初の稼働時間呼び出しを2番目の呼び出しと比較したときの出力例:
4:1:9
21:1:6
4:1:9(4番目の位置に「9」を追加 - 1文字を削除)
21:1:6 (位置 21 - 削除する文字 1 個に「6」を追加)
おそらくgitでいくつかのコマンドを使用するかもしれませんが、シェルスクリプトを実行できるすべてのシステムで実行できる最も単純な、可能な依存関係なしに可能な解決策を探しています。
やりたいことをよりよく理解するために更新してください。
この diff ソリューションはバイトを節約するために必要です。 Trafikito.comエージェントはサーバー上で実行されており、いくつかのコマンド(例:uptime
free -m
など)の出力をAPIエンドポイントに送信します。これは1分に1回発生し、サーバーへのいくつかのアウトバウンドトラフィックを生成します。違いだけを送信してネットワークのスペースを減らしたいです。そして、ほとんどの場合、出力全体で少数の数だけが変更されます。
diff
- このツールは1行ずつ比較するため、1行だけ出力するuptime
コマンドには適していません。
cmp
- ツールはバイト単位で比較しますが、コマンドの出力が大きい。対応するバイトが文字列の先頭に挿入されると、将来のすべてのバイトの違いが表示されます。残りのコンテンツをすべて移動し、x の位置に新しいコンテンツを挿入する様子だけを表示することもできます。
ベストアンサー1
次の点を考慮しましたかcmp
?
cmp -lb file[12]
5 70 8 71 9
22 65 5 66 6