私はLinuxで作業しており、次のコマンドを実行しています。
$ ls -t postgresq*.log | head -n1 | xargs grep "ALTER USER"
< pg_user 2021-07-15 05:03:41.609 EDT > LOG: statement: ALTER USER username WITH ENCRYPTED PASSWORD 'JUly@#12' valid until '2021-07-20';
しかし、私は次の文字列をgrepしたいと思います。
ALTER USER username WITH ENCRYPTED PASSWORD 'JUly@#12' valid until '2021-07-20';
ベストアンサー1
-o
ちょうど(で)man grep
を使用してください:
$ man grep | grep -P -A1 -- '^\s+-o'
-o, --only-matching
Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line.
行内の一致部分-o
のみが印刷されるため、簡単に検索して最後まですべての項目を一致させることができます。grep
ALTER USER.*
ALTER USER
$ ls -t postgresq*.log | head -n1 | xargs grep -oP 'ALTER USER.*'
ALTER USER username WITH ENCRYPTED PASSWORD 'JUly@#12' valid until '2021-07-20';
気づく出力の解析ls
一般的に良い考えではありませんが、これらのログファイルの名前は単純でなければならないので安全です。