Сценарий Bash Проблема с анализом текста в строке с пробельными символами

В команде jsvc есть опечатка. Я написал:

-classpath [...]:$CATALINA_HOME/bin/tomcat-juli.jar:[...]

, а не:

-classpath [...]:$CATALINA__HOME/bin/tomcat-juli.jar:[...]

Я удалил ненужное подчеркивание, и теперь это работает.

1
26.05.2018, 08:32
1 ответ

En bashy usando una variable de matriz en su lugar, puede hacer algo como:

{ IFS=$'\n'; array=($(grep -Po 'name=[^-]+(?=\s*-)' infile)); }

luego imprime los elementos de la matriz (El índice de matriz en bash comienza desde 0):

printf '%s\n' "${array[@]}"
name=PolicyName
name=PolicyWorkflow
name=PolicyAction
name=PolicyName
name=PolicyWorkflow
name=PolicyAction
name=Policy Name
name=PolicyWorkflow
name=PolicyAction

O para imprimir un solo elemento:

printf '%s\n' "${array[6]}"
name=Policy Name
  • DefinimosIFScomo el carácter " \newline" IFS=$'\n'de modo que la división de palabras ocurrirá en el carácter " \newline" solo en el resultado de sin comillas Sustitución de comandos$(...).

  • La ​​sintaxis { list; }es conocida Comandos de agrupación y yo solía agrupar mis comandos.

  • La sintaxis array=(...)se utiliza para crear una variable de matriz asociada denominada array.

  • Con grep -Po 'name=[^-]+(?=\s*-)' infile, imprimimos -osolo las coincidencias que coinciden con el patrón"name="seguido de cualquier longitud de caracteres que no sea -cero, pero un guión [^-]+que sigue a cero -o -] más espacios en blanco hasta un guión (?=\s*-).


Lectura futura:

0
28.01.2020, 00:34

Теги

Похожие вопросы