Extração de String

Extração de String

Eu tenho um arquivo com o padrão de texto:

AAAA - BBBB (CCCC) - (DDDD)

Estou interessado apenas em usar o primeiro conjunto AAAA - BBBB individualmente (ou seja, AAAA e BBBB). Cortei o '(CCCC) - (DDDD)' usando:

FIRST_SET="${STRING%% (*}" 

me dando 'AAAA - BBBB'.

Pela minha vida, não consigo extrair 'AAAA' do segundo 'BBBB'.

Desde já, obrigado.

Responder1

Supondo que você queira o resultado final em duas variáveis ​​de shell, que as palavras desejadas sejam delimitadas por espaços em branco, que não haja espaços em branco embutidos nas palavras e que a IFSvariável tenha o valor padrão:

$ read -r word1 dash word2 junk <file
$ printf 'word1 = "%s"\nword2 = "%s"\n' "$word1" "$word2"
word1 = "AAAA"
word2 = "BBBB"

O readcomando usado aqui irá ler a primeira palavra na variável word1e irá ler a segunda palavra na variável word2. O traço entre as palavras é lido na variável dashe o lixo no final é colocado na variável chamada junk.

Responder2

Faça como no primeiro passo:

FIRST_SET="${STRING%% (*}"
FIRST_WORD=${FIRST_SET%% *}
SECOND_WORD=${FIRST_SET##* }

informação relacionada