角かっこ間のグループに一致する awk gensub 正規表現

角かっこ間のグループに一致する awk gensub 正規表現
  • レコード入力から$0
    -0.005 Tc 0.005 Tw [(T)-8.5(o)-3.2(p)-15.3(ik)]TJ
    
  • /1次のアドレスに出力してくださいgensub
    (T)-8.5(o)-3.2(p)-15.3(ik)
    

答え1

$ s='-0.005 Tc 0.005 Tw [(T)-8.5(o)-3.2(p)-15.3(ik)]TJ'

$ # if you want to delete []TJ
$ echo "$s" | awk '{print gensub(/\[([^]]+)]TJ/, "\\1", "g")}'
-0.005 Tc 0.005 Tw (T)-8.5(o)-3.2(p)-15.3(ik)

$ # if you just want the portion inside []TJ
$ echo "$s" | awk 'match($0, /\[([^]]+)]TJ/, a){s = a[1]; print s}'
(T)-8.5(o)-3.2(p)-15.3(ik)

GNU awkmatchキャプチャグループを簡単に抽出できるようにするメソッドの3番目のパラメータをサポートします。配列の最初の要素には完全一致があります。第2の要素は第1のグループと一致する部品を含み、第3の要素は第2のグループと一致する部品を含む。

答え2

$ echo '-0.005 Tc 0.005 Tw [(T)-8.5(o)-3.2(p)-15.3(ik)]TJ' |
    awk '{print gensub(/.*\[([^]]+)]TJ/,"\\1",1)}'
(T)-8.5(o)-3.2(p)-15.3(ik)

regex101などのサイトは、正規表現バージョン(BRE、ERE、またはPCRE)および/または特定のツールで使用される区切り文字を十分に考慮していないため、コマンドラインツールで使用する正規表現を決定するのに事実上役に立ちません。ツールが逆参照および/または正規表現のテキストマッチングをサポートするかどうか、および/または特定のツールの特定のバージョンに個人拡張があるかどうか、および/またはツールに正規表現の動作に影響を与えるオプションがあるかどうか

関連情報