很抱歉,我会尽力更好地解释:
我必须编写一个执行以下操作的脚本 -> 对 wsdl 进行curl 或 wget 并找到以下句子:
<schema targetNamespace="http://net.jboss.org/jmx" xmlns="asdasd2001/XMLSchema">
<import namespace=".xmlsoap.org/soap/encoding/" /><br/>
<simpleType name="ObjectNameType">
<simpleContent>
<extension base="xsd:string" />
</simpleContent>
</simpleType>
</schema>
如果 wsdl 上存在这些句子,则返回一个 bool 值 - 所以我想使用 grep 但是,它没有按我的预期工作,因为它会检查 wsdl 上是否有任何句子。示例
`PcspI01Service%3Fwsdl | grep -F -f ex.bko
**<import namespace="org/soap/encoding/" />
</schema>
<import namespace="org/soap/encoding/" />
</schema>**
<schema targetNamespace="rg/2001/XMLSchema">
<import namespace="soap/encoding/" />
<simpleType name="ObjectNameType">
<simpleContent>
<extension base="xsd:string" />
</simpleContent>
</simpleType>
</schema>`
在这个例子中,它向我展示了这些行
`<import namespace="org/soap/encoding/" />
</schema>`
存在于文件中,但这对我没有帮助,我需要匹配所有行并按它们的顺序
现在是不是更清楚了?
提前感谢大家!
最佳答案
您只是说您想在文件中查找多行字符串吗?那是(使用 GNU awk 进行多字符 RS):
awk -v RS='^$' -v ORS= -v regexp="line1
line2
line3" '$0 ~ regexp' file
您没有发布任何预期的输出,因此上面的内容将仅打印整个文件(如果包含)
line1
line2
line3
如果您需要字符串匹配而不是正则表达式匹配,请使用 index()
而不是 ~
。
如果您没有 gawk,可以选择一些您知道不能出现在输入文件中的控制字符来用作 RS,或者使用连接一次一行地构建一个记录字符串,然后在 END 部分进行测试。
如果这不是您想要做的,请编辑您的问题以澄清并添加一些简短的代表性输入和预期输出。
关于linux - 需要在 wsdl - grep/awk/sed 上匹配确切的句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23615079/