【发布时间】:2014-07-15 19:04:36
【问题描述】:
您好,我正在尝试编写一个验证脚本,允许我检查各种 tomcat 配置文件中的设置。我可以 grep 寻找我正在寻找的值,但是作为注释掉的部分可以跨越多行,我试图寻找 start () 注释值的第一次出现。 这是tomcat的server.xml配置文件的sn-p,其中块没有被注释掉,我想grep找到SSLEnabled的值。
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="/opt/cloudhost/tomcat6/security/keystore.jks" keystorePass="changeit"
clientAuth="false" sslProtocols="TLSv1,TLSv1.1,TLSv1.2"
ciphers="TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,... [Sortened cipher list fro readability]" />
现在图片如果上面提到的配置被注释掉了,我会忽略它,不考虑设置集。因此请注意配置保留默认值(如果它当然有一个,但与我的问题并不真正相关):
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="/opt/cloudhost/tomcat6/security/keystore.jks" keystorePass="changeit"
clientAuth="false" sslProtocols="TLSv1,TLSv1.1,TLSv1.2"
ciphers="TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA,... [Sortened cipher list fro readability]" />
-->
我在想我可以这样做:
lineNumber=$(grep -n <somevalue> filename|awk '{ print $1 }')
基于this question,我试过了
tail -n $lineNumber server.xml| grep -n '<!--'
它确实返回行但似乎从文件顶部开始并且还缺少一些条目。我不明白为什么。
我也试过了:
sed '25,$!d' server.xml |grep -n '<!--'
产生相同的结果
【问题讨论】:
-
提供一些示例数据和您的预期输出。
-
如果您只是想找到一种模式,请使用
grep。如果您只是想在一行上用字符串替换模式,请使用sed。对于其他任何事情,为了您自己的理智,只需使用awk。 -
例如。这是我正在寻找的行:
我想找到“”的行号,那么我知道我最初搜索的内容没有被注释掉。有意义吗? -
编辑您的问题,向我们展示一些格式正确的示例输入和预期输出。