0

awk に特定の情報のみを出力させようとしています。単純な文字列だけなら作れます。しかし、次のような検索と印刷を依頼すると機能しません。

/[0-9]*\.[0-9]*\.[0-9]*\.[0-99]*\.[0-999]*/

IP アドレスのように、ドットで区切られた数字を探しています。例えば:

#.#.#.##.### where #=integer

例えば:

これは印刷のみTEXTで、正常に機能します。

awk '{for(i=1;i<=NF;i++){ if($i==“TEXT”){print $i} } }' source.txt > result.txt

これは必要なものを出力するはずですが、機能しません。

awk '{for(i=1;i<=NF;i++){ if($i==“/[0-9]*\.[0-9]*\.[0-9]*\.[0-99]*\.[0-999]*/”){print $i} } }' source.txt > result.txt

これは問題なく動作しますが、必要なものだけでなく、行全体を出力します。

awk -F"\t" '/[0-9]*\.[0-9]*\.[0-9]*\.[0-99]*\.[0-999]*/{ print }' source.txt > result.txt

私は何を間違っていますか?

4

2 に答える 2

1

「~」と不要な引用符の代わりに「==」を使用していました。

これはうまくいきます:

awk '{for(i=1;i<=NF;i++){ if($i~/[0-9]*\.[0-9]*\.[0-9]*\.[0-99]*\.[0-999]*/){print $i} } }' jfinancas.txt > teste5.txt
于 2015-12-07T18:55:36.783 に答える