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

嗨,我对所有层的正则表达式和转义字符有点迷失了,所以从我上面发布的代码中,我特别想了解 F 之后的字段分隔符,所以我们想要一个引号,所以我们用反斜杠转义它但是为什么 -F 之后没有空格?为什么 org.apache.coyote.tomcat4.CoyoteConnector 放在单引号之间,它周围的斜线是什么?

谢谢

4

2 回答 2

1

它将第一个双引号之后的文本分配到第二个双引号或行尾,从包含 的行之后的每一行org.apache.coyote.tomcat4.CoyoteConnector,从路径存储在JBOSS_APP_CFG变量中的文件到APP_PORT变量。

awk 选项在同一参数以及下一个参数中跟随选项字符时接受值。即-F\"参数,将值分配"给选项-F(字段分隔符)。退格可防止 shell 将双引号解释为以双引号开头的字符。

单引号用于防止 shell 以任何方式解释 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. 动作部分读取下一行并输出其第二个字段(字段由 分隔")。

于 2013-11-07T20:15:06.700 回答
0

它确实读取存储在变量中的文件 ${JBOSS_APP_CFG}
搜索org.apache.coyote.tomcat4.CoyoteConnector
获取下一行并打印字段编号2
然后将其存储在变量APP_PORT
-F\"告诉 awk"用作字段分隔符您也可以这样写

awk -v FS='"' (code) file
or
awk (code) FS='"' file
or 
awk (code) FS=\" file
于 2013-11-07T20:14:23.000 回答