0

クエリは次のとおりです。

grep bar 'foo.txt' | awk '{print $3}'

「awk」クエリによって出力されるフィールド名は、マングルされた C++ シンボル名です。それぞれをdemに渡し、最終的に「dem」の出力、つまりデマングルされたシンボルを出力したいと思います。

フィールド区切り文字が ' ' (スペース) であると想定します。

4

3 に答える 3

3

awkパターンマッチング言語です。はgrepまったく不要です。

awk '/bar/{print $3}' foot.txt

あなたの例がすることをします。

編集前の回答のコメントを読んだ後、少し修正しました(私は何も知りませんdem...):

system次のような方法で awkの呼び出しを利用できます。

awk '/bar/{cline="dem " $3; system(cline)}' foot.txt

demしかし、これは処理されたシンボルごとに のインスタンスを生成します。非常に非効率的です。

それでは、もっと賢くなりましょう。

awk '/bar/{list = list " " $3;}END{cline="dem " list; system(cline)}' foot.txt

ところで- 私が持っていないdemか、あなたの入力がないので、テストされていません。


別の考え:xargs他のポスターが提供する定式化を使用する場合は、cutより効率的である可能性がありますawk。ただし、その時点で、grepもう一度必要になります。

于 2009-02-22T03:58:40.090 に答える
1

これにより、デマングルされたシンボルが出力され、メソッドの場合は引数リストが完成します。

awk '/bar/ { print $3 }' foo.txt | xargs dem | sed -e 's:.* == ::'

これにより、メソッドの場合は引数リストなしで、デマングルされたシンボルが出力されます。

awk '/bar/ { print $3 }' foo.txt | xargs dem | sed -e 's:.* == \([^(]*\).*:\1:'

乾杯、V.

于 2009-02-22T04:04:58.483 に答える
1

どうですか

grep bar 'foo.txt' | awk '{ print $3 }' | xargs dem | awk '{ print $3 }'
于 2009-02-22T03:54:49.087 に答える