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 IFS
variable tiene el valor predeterminado:
$ read -r word1 dash word2 junk <file
$ printf 'word1 = "%s"\nword2 = "%s"\n' "$word1" "$word2"
word1 = "AAAA"
word2 = "BBBB"
El read
comando utilizado aquí leerá la primera palabra en la variable word1
y leerá la segunda palabra en la variable word2
. El guión entre las palabras se lee en la variable dash
y 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##* }