2013-11-07 2 views
0
APP_PORT=`${AWK} -F\" ' \ 
         /org.apache.coyote.tomcat4.CoyoteConnector/ { 
          getline 
          print $2 
         }' ${JBOSS_APP_CFG} 2>/dev/null` 

Привет, я немного потерял все слои регулярных и escape-символов, поэтому из кода, который я написал выше, я хочу понять, что происходит сразу после разделителя поля F, поэтому мы хотим получить цитату, чтобы избежать это с обратной косой чертой, но почему нет места после -F? и почему org.apache.coyote.tomcat4.CoyoteConnector помещается между одиночной цитатой и какими являются косые черты, окружающие ее?Что делает команда Shell/Awk?

Благодаря

ответ

0

Он прочитал файл, хранящийся в переменной ${JBOSS_APP_CFG}
Поиск org.apache.coyote.tomcat4.CoyoteConnector
Получить следующую строку и печати подали номер 2
Затем хранить это в переменной APP_PORT
The -F\" говорит AWK использовать " как поданный сепаратор Вы также можете написать это как это

awk -v FS='"' (code) file 
or 
awk (code) FS='"' file 
or 
awk (code) FS=\" file 
+0

Чтобы быть ясным, только первое из указанных выше 3 awk-операторов эквивалентно оригиналу, и имейте в виду, что он ищет 'org.apache.coyote.tomcat4.CoyoteConnector' как RE, а не строку (так'. 's являются метасимволами RE, а не фактическим символом' .'). Также подход использования 'getline' плох (см. Http://awk.info/?tip/getline), и вы должны указывать свои переменные оболочки и использовать' $ (...) 'вместо тиков. –

1

Он присваивает текст после первой двойной кавычки и до второй двойной кавычки или конца строки из каждой строки, следующей за строкой, содержащей org.apache.coyote.tomcat4.CoyoteConnector, из файла с пробелом, хранящимся в переменной JBOSS_APP_CFG, в переменную APP_PORT.

Параметры Awk принимают значения, когда они следуют символу опции в том же аргументе, а также в следующем аргументе. То есть аргумент -F\", присваивает значение " опции -F (разделитель полей). Backspace препятствует интерпретации интерпретатора двойной кавычки в качестве символа, начинающего двойное цитирование.

Одиночные кавычки используются для предотвращения интерпретации интерпретатора сценария Awk, разбивая его на слова в пробеле и предоставляя его Awk как несколько аргументов, а не один.

/org.apache.coyote.tomcat4.CoyoteConnector/ - это часть шаблона из инструкции шаблона действия (действие находится в фигурных скобках, следующих далее). См. http://www.gnu.org/software/gawk/manual/html_node/Patterns-and-Actions.html

Часть шаблона соответствует строкам, содержащим org.apache.coyote.tomcat4.CoyoteConnector. Часть действия считывает следующую строку и выводит ее второе поле (поля разделяются на ").

Смежные вопросы