3

私はLinuxSOとbashコマンドを初めて使用しますが、経験豊富な人が助けてくれると思います。2つの異なるテキストファイルを実行のログと比較したいのですが、一部の行(すべてではない)は次のような時間トークンで始まります。

12345 ps line 1 content 
23456 ps line 2 content 
line 3 content 
345 ps line 4 content

これらのトークンはログごとに異なる値を持っていますが、その比較では、私はそれらを気にしません。行の内容を比較して無視したいだけです。'sed'コマンドを使用して、そのトークンなしで新しいファイルを生成し、それらを結合することもできますが、それを繰り返し行うふりをして、1つのコマンドまたは1つのshファイルだけを使用すると時間を節約できます。'sed'と'diff'を組み合わせて使用​​しようとしましたが、成功しませんでした。誰かが私を助けてくれませんか?

4

2 に答える 2

7

次のsedoneライナーを使用して、ファイルの先頭から数字を削除できます。

sed 's/^[0-9]* ps//g' file1

このような2つのファイル(タイムスタンプが少ない)を比較するには、プロセス置換を使用できます。

diff <(sed 's/^[0-9]* ps//g' file1) <(sed 's/^[0-9]* ps//g' file2)
于 2012-12-19T14:35:03.000 に答える
0

2つの入力ファイルと期待される出力を表示しなかったため、テストされていませんが、説明から、これで必要なことができると思います。

awk '
   { sub(/^[[:digit:]]+[[:space:]]*/,"") }
   NR==FNR { file1[FNR] = $0; next }
   { print ($0 == file1[FNR] ? "==" : "!="), $0 }
' file1 file2

それでもうまくいかない場合は、小さなサンプル入力と期待される出力を投稿してください。

于 2012-12-19T15:24:17.413 に答える