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 IFS
variá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 read
comando usado aqui irá ler a primeira palavra na variável word1
e irá ler a segunda palavra na variável word2
. O traço entre as palavras é lido na variável dash
e 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##* }