Linux Bashで角括弧内の複雑な文字列を抽出する

Linux Bashで角括弧内の複雑な文字列を抽出する

Linux bashツールで次の文字列を抽出したいと思います。

XXAAGGHH (XXXXX) ERRTYTUUUI
AAAAAAAA ( %%))XX) $@@$&%^&&
AADDDDD$ (.SD F@* @) *$%^^&^&&&
AA^@%%^^ ()[))DS((]) RTTYUU

抽出された解像度は次のようになります。

XXXXX
  %%))XX
.SD F@* @
)[))DS((]

残念ながら、文字列の長さが固定されていないため、substrは使用できません。括弧内に括弧(バランスが合わない可能性があります)、スペースまたはタブがあります(実際にはUTF-8横説説ですが、ローカルシステムはASCIIのみを表示できます)。

私が使用するパターンは、「(」:スペース+左角かっこは左境界を表します。)):スペース+右角括弧は右境界を表します。

awk、sed、grepを試しましたが失敗しました。

ヒントをいただけますか?ありがとうございます。

ベストアンサー1

sed唯一の解決策:

sed 's/.* (\(.*\)) .*/\1/g'

例:

sed 's/.* (\(.*\)) .*/\1/g' myInput.txt 
XXXXX
 %%))XX
.SD F@* @
)[))DS((]

おすすめ記事