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((]