使用awk从solaris中的文件中删除Grep word

使用awk从solaris中的文件中删除Grep word,awk,sed,cut,solaris-10,Awk,Sed,Cut,Solaris 10,我使用的是OracleSolaris10,尝试使用awk和cut命令组合从xml文件中grep一个单词。我在下面提到了xml文件中的字符串 <Resource driverClassName="oracle.jdbc.OracleDriver" name="jdbc/LiferayPool" type="javax.sql.DataSource" username="PROD_LIFERAY" password="" url="jdbc:oracle:thin:@server02:152

我使用的是OracleSolaris10,尝试使用awk和cut命令组合从xml文件中grep一个单词。我在下面提到了xml文件中的字符串

<Resource driverClassName="oracle.jdbc.OracleDriver"  name="jdbc/LiferayPool" type="javax.sql.DataSource" username="PROD_LIFERAY" password="" url="jdbc:oracle:thin:@server02:1521:PROD0100 " maxActive="20" maxIdle="10" minIdle="3" maxWait="10000" initialSize="3" validationInterval="60000" testOnBorrow="true" validationQuery="select 1 from dual" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"/>


我想构建awk命令,从上面示例中显示的当前PROD0100位置grep word。如果有人能帮我弄清楚,我将不胜感激

像往常一样,在Unix上有很多方法可以解决这类问题

Awk将模式与动作相匹配,因此您需要

/PROD0100/ {
    # your actions here on the matching line
}
gawk '/PROD0100/{ for (i=1;i<=NF;i=i+1) { if (match($i, ".*PROD0100.*") != 0) { print "matching word "$i } } }' test
默认情况下,awk会将每行拆分为以空格分隔的字段

所以如果你用

/PROD0100/ {
    # your actions here on the matching line
}
gawk '/PROD0100/{ for (i=1;i<=NF;i=i+1) { if (match($i, ".*PROD0100.*") != 0) { print "matching word "$i } } }' test

但是,对于您提供的输入,您可能会遇到一些问题,因为在找到的单词中,在结束双引号之前有一个空格

您应该真正使用XML解析器来解析XMK,同时,尝试将双引号更改为换行符,看看这是否有帮助<代码>tr'“''\n'您的问题不清楚。是否要打印包含PROD0100的每一行,或打印发生在示例中恰好包含PROD0100的位置的字符串或其他内容?您的问题旨在澄清您的需求,并向我们展示您的示例输入以及您迄今为止尝试的预期输出。谢谢Paul,我已编辑了说明。我不想grep特定的PROD0100单词,但单词位于那个位置。