文字列に対して2つのファイルをgrepしようとしています。
これらのファイルは
/confluent/logs/server.log
/confluent/logs/server.log.1
しかし、私たちは他のファイルを次のように一致させたくありません。
/confluent/logs/server.log.2
/confluent/logs/server.log.3
など
そのため、代わりに次のようにdouble grepを実行してください。
grep log.retention.bytes /confluent/logs/server.log
grep log.retention.bytes /confluent/logs/server.log.1
log.retention.bytes
同時に、2つのファイルの一致を探したいです。
私たちはしようとします
grep log.retention.bytes /opt/mcspace/confluent/logs/server.log.*[1]
しかし、これは間違っています。
答え1
grep log.retention.bytes server.log{,.1}
ログエントリを時系列(追加)に保つには、ファイルの順序を逆にする必要があります。
grep log.retention.bytes server.log{.1,}
もちろん、これは次のとおりです。
grep log.retention.bytes server.log.1 server.log
中括弧拡張は、grep
コマンドを実行する前にシェルによって実行されるためです。
また、zsh
シェルを使用すると、簡単に自動ワイルドカードを使用できます。パターンに一致する最後のN個のファイルそして:
grep log.retention.bytes server.log*(Om[-2,-1])
Om
つまり時間に基づいて降順に並べ替え[-2,-1]
最後の2行を取得します。より多くのファイルを検索して手動で入力したくない場合は、このヒントを覚えておくことをお勧めします。
答え2
両方のファイルをgrepする最も簡単な方法は、両方のファイルをgrepに提供することです。
grep log.retention.bytes /confluent/logs/server.log /confluent/logs/server.log.1
より多くのファイルがある場合は、手動ですべてを一覧表示するか、特定のファイルとのみ一致するglobを使用できます。たとえば、bashでは:
shopt -s extglob
grep log.retention.bytes /confluent/logs/server.log?(.1)
最後に、おそらくあなたの場合、最も簡単な方法は、次のように支柱拡張を使用することができます。トーマスの答えから。