4

私はこの形式で出力しています:

/ignore-this/^/../I/want/this@ignore-this

awk 正規表現を使用して以下をキャプチャしようとしています:

../I/want/this

これは特に難しいことではありませんが、適切にエスケープする方法がわから^ないため、新しい行またはそうでないとして解釈されません。以下は私がこれまでに持っているものです。印刷する以外はほとんど機能します。

/ignore-this/^/../I/want/this

コードは次のとおりです。

#!/bin/awk -f                                                                              
{
    if (match($0, "\^.*@")){
        print substr($0, RSTART, RLENGTH-1);
    }
}
4

3 に答える 3

2

gawkを使用した別の可能性:

#!/opt/local/bin/gawk -f
{
    if (match($0, /[\^]\/(.*)@/, pieces)) {
        print pieces[1];
    }
}
于 2011-11-07T19:39:29.830 に答える
0
awk -F'\\^|@' '{print $2}'

この場合はうまくいくはずです

kent$  echo "/ignore-this/^/../I/want/this@ignore-this"\
        |awk -F'\\^|@' '{print $2}' 
/../I/want/this
于 2011-11-07T20:43:19.857 に答える