私はこの文字列を持っています:
XXXX: 150: some texxt: long text
この場合、 ::
likeの間の数字だけを取得する必要があります。:150:
echo "$LINE" |sed -n 's/^.*\XXXX:\(.*\)\:.*/\1/p'
私を取得します 150: some texxt
遅延させて最初の試合で停止するにはどうすればよいですか
私はこの文字列を持っています:
XXXX: 150: some texxt: long text
この場合、 ::
likeの間の数字だけを取得する必要があります。:150:
echo "$LINE" |sed -n 's/^.*\XXXX:\(.*\)\:.*/\1/p'
私を取得します 150: some texxt
遅延させて最初の試合で停止するにはどうすればよいですか
これがあなたのケースでうまくいくかどうかはわかりませんが、この正規表現は : 文字の間のすべての数字を見つけます。
:\s*(\d+)\s*:
この番号は Capture Group 1 にあります。
キャプチャ グループを調べる必要がなく、単純に一致全体を使用する別の同様のアプローチは次のようになります (ただし、これは Perl では機能しないようです)。
(?<=:\s*)\d+(?=\s*:)
$ LINE='XXXX: 150: some texxt: long text'
$ echo "$LINE" | sed -r 's@^[^:]+:([^:]+):.*@\1@g'
150
また
$ echo "$LINE" | perl -pe 's@.*?:([^:]+):.*@\1@g'
150
説明
[^x]
意味 : x文字を除外する用語は「非貪欲」です。
^.*?\XXXX:\(.*\)\:.*
?
afterを追加することで達成されます.*