Extracción de cuerdas

Extracción de cuerdas

Tengo un archivo con el patrón de texto:

AAAA - BBBB (CCCC) - (DDDD)

Solo estoy interesado en usar el primer conjunto AAAA - BBBB individualmente (es decir, AAAA y BBBB). He cortado el '(CCCC) - (DDDD)' usando:

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

dándome 'AAAA - BBBB'.

Por mi vida, no puedo extraer 'AAAA' del segundo 'BBBB'.

Gracias de antemano.

Respuesta1

Suponiendo que desea el resultado final en dos variables de shell, que las palabras que desea están delimitadas por espacios en blanco, que no hay espacios en blanco incrustados en las palabras y que la IFSvariable tiene el valor predeterminado:

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

El readcomando utilizado aquí leerá la primera palabra en la variable word1y leerá la segunda palabra en la variable word2. El guión entre las palabras se lee en la variable dashy la basura al final se coloca en la variable llamada junk.

Respuesta2

Simplemente hazlo como tu primer paso:

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

información relacionada