Unix 如何在匹配字符串中的一个单词后对整个字符串进行grep

Unix 如何在匹配字符串中的一个单词后对整个字符串进行grep,unix,awk,grep,Unix,Awk,Grep,我有这个 -Xmx10240m-Xms10240m-verbose:gc-XX:+cmsparallelremarkeabled-XX:+UseParNewGC-XX:+SurvivorRatio:+survivorGC-Dsun.net.inetaddr.ttl=3600-XX:cmSinitiatingOccinecyFraction=70-XX:+useCSinitingOccinecYony-XX:+PrintTenuringDistribution-XX:SurvivorAtio=6-

我有这个

-Xmx10240m-Xms10240m-verbose:gc-XX:+cmsparallelremarkeabled-XX:+UseParNewGC-XX:+SurvivorRatio:+survivorGC-Dsun.net.inetaddr.ttl=3600-XX:cmSinitiatingOccinecyFraction=70-XX:+useCSinitingOccinecYony-XX:+PrintTenuringDistribution-XX:SurvivorAtio=6-XX:+useCMarkSweepGC-XX:+PrintGCDetails-XX:+PrintGCDateStamps-XX:+PrintHeapAtGC-XX:PermSize=512m-XX:MaxPermSize=512m-Xloggc:/www/logs/jboss/macys-navapp\u master\u prod\u cellA\u m01/gc-log.txt-XX:+heapdumponautofmemoryerror-XX:HeapDumpPath=/www/logs/heapdump/navapp\u master\u prod\u cellA\u m01/navapp\u master\u prod\u cellA\u m01.hprof-Djava.net.preferv4stack=true-Dorg.jboss.resolver.warn=true-Djboss.modules.system.pkgs=org.jboss.byteman-Djava.awt.headless=true-XX:+usecompressdoops-Dclient.encoding.override=ISO-8859-1-XX:+DisableExplicitGC-Dorg.apache.jasper.Constants.USE_实例管理器_FOR_标记=false-Dorg.apache.jasper.Constants.USE_实例管理器-Dorg.apache.jasper.runtime.jspfactorympl.USE_池=false-Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT\u BUFFER=true-XX:NewSize=3072m-XX:MaxNewSize=3072m-agentpath:/www/a/apps/dynatrace/dt.so=name=server1\u ProdCellA\u master\u m1,server=ct\u collector:9998-Dfile.encoding=ISO-8859-1-Dsdp.configuration.home=/www/apps/properties-XX:+uselagepages-Dzookeeper.sasl.client=false

在匹配“-agentpath”“-agentpath:/www/a/apps/dynatrace/dt.so=name=server1\u ProdCellA\u master\u m1,server=ct\u collector:9998”后,我希望能够对整个字符串进行grep

这是我正在使用的当前命令,但它不起作用“cat cached_java_opts | awk'/-agentpath/{print$(NF)}”


谢谢你

像这样发布
grep

grep -o '\-agentpath[^ ]*' yourfile

-o
选项仅打印匹配图案(而不是匹配线)。由于模式被配置为扩展到第一个空格,因此您将获得整个参数(这是有效的,因为它不是命令行的最后一个参数)。也许可以用
grep-oE'\-agentpath([^]*.*.$)”
启动
grep
这样做:

grep -o '\-agentpath[^ ]*' yourfile

-o
选项仅打印匹配图案(而不是匹配线)。由于模式被配置为扩展到第一个空格,因此您将获得整个参数(这是有效的,因为它不是命令行的最后一个参数)。也许可以通过
grep-oE'\-agentpath([^]*.*.$)”
awk
解决方案来改进:

awk -F'-agentpath:' '{split($2,a," ") ;print FS a[1]}' infile
-agentpath:/www/a/apps/dynatrace/dt.so=name=server1_ProdCellA_master_m1,server=ct_collector:9998
grep
:或多或少,与已回答的内容相同

grep -oP '\-agentpath:.*?\s' infile
-agentpath:/www/a/apps/dynatrace/dt.so=name=server1_ProdCellA_master_m1,server=ct_collector:9998

awk
解决方案:

awk -F'-agentpath:' '{split($2,a," ") ;print FS a[1]}' infile
-agentpath:/www/a/apps/dynatrace/dt.so=name=server1_ProdCellA_master_m1,server=ct_collector:9998
grep
:或多或少,与已回答的内容相同

grep -oP '\-agentpath:.*?\s' infile
-agentpath:/www/a/apps/dynatrace/dt.so=name=server1_ProdCellA_master_m1,server=ct_collector:9998

谢谢你的回复,但是看起来像“-agenth”它认为这些是更多的grep选项,因为“-”,尽管我在它周围加了“-”和转义字符,比如grep-o'\-agentpath[^]*”你的文件,但我不能在这里测试它,因为我的grep在工作中没有
-o
选项(这是最近的)。编辑。现在了解了
-agentname
@穆齐多感谢你纠正了这一点!那工作我也忘了逃逸lolz,非常感谢你的回复,但是看起来像“-agenth”它认为这些是更多的grep选项,因为“-”,尽管我在它周围放了“-”,看起来逃逸字符像grep-o'\-agentpath[^]*”你的文件对不起,无法在此测试它,因为我的工作grep没有
-o
选项(这是最近的)。编辑。现在了解了
-agentname
@穆齐多感谢你纠正了这一点!那件工作我也忘了逃走了,哈哈,谢谢你