文字列正規表現busybox間の文字列の抽出

文字列正規表現busybox間の文字列の抽出

BusyBoxで正規表現を使用して2つの文字列の間で文字列を抽出しようとしています。現地でできました。

extract_string=$(echo $content | grep -P '(?<=CURRENT_VERSION ")(.*)(?=")' -o)

残念ながら、このBusyBoxバージョンのgrepコマンドはこの-Pオプションをサポートしていません。sedawkおよびを使用できますgrep

ひも:#define CURRENT_VERSION "1.0.0.2" some other random text

出力:1.0.0.2

私がこれを達成できる他の方法を知っている人はいますか?

オペレーティングシステム:カーネル 2.6.x

便利:ビジボックス1.2xで

ベストアンサー1

そしてsed

extract_string=$(
  printf '%s\n' "$content" |
    sed -n 's/.*CURRENT_VERSION "\([^"]*\).*/\1/p'
)

そしてawk

extract_string=$(
  printf '%s\n' "$content" |
    awk -F'"' '/CURRENT_VERSION/{ print $2 }'
)

おすすめ記事