なぜパイプを通して確認できないのですか?

なぜパイプを通して確認できないのですか?

だからgrep私はMercurialを使ってログからいくつかのコンテンツを抽出し、それなしでawkできることを確認するために使用しようとしませんでしたが、完全な最新の正規表現がサポートされていgrepないため失敗しました。egrep

これはgrepで発生します。

$   hg log <filename> | grep changeset
changeset:   3651:d23495ab1168
changeset:   2974:6aa71cb2c575
changeset:   2756:9dd7fb635678
changeset:   2532:d3ced9af4d6c
changeset:   2459:9d5f5553b851
changeset:   1835:4558836beed1
changeset:   1628:517d0239e830
changeset:   1486:114bce51254d
changeset:   1378:2b968e7fbd19
changeset:   1374:4e7772e48d00

これが私が望む出力です。しかし、より良い正規表現のサポートのためにackaaaand ....を試してみましたが、何もしません。私は何を見逃していますか?いくつかの例を確認したところ、私がここでやっていることにはあまり違いはありません。

$  hg log <filename> | ack changeset
$ 

出力がありません。

私がこのツールを誤って理解したのではないでしょうか?egrepまた、十分なサポートを受けていません。ただ使用したい\s:(

答え1

ackのドキュメントページでこれを見たのに役立ちますか?

 --[no]filter                  Force ack to treat standard input as a pipe
                            (--filter) or tty (--nofilter)

答え2

入ろうとする

awk '/changeset/ {print}'

答え3

パーティーには遅すぎますが、ack v3.3.1パイプラインはうまくいきます。

$ git log | ack 'bar'
$ ack 'regex' log | ack 'bar'

複雑な正規表現を実行する必要がありますが、時間がかかり、1行で実行できないため、この問題に遭遇しました。

これが誰かに役立つことを願っています

答え4

ackDebian ベースのディストリビューションにインストールされるデフォルトパッケージです。実行中にこのようなメッセージが表示された場合は、以下の手順をack -h使用するか、従ってください。ack-grephttp://beyondgrep.com/install/存在するDebian 派生から ack-grep の名前を変更する

hg log <filename> | ack-grep changesetack-grepが正しくインストールされていることを確認してください。

関連情報