免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1639 | 回复: 6
打印 上一主题 下一主题

[文本处理] 求助,半于字符串截取的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-27 15:04 |只看该作者 |倒序浏览
我现在要查看某进程的安装路径,所以要从进程信息入手。信息如下
root     26320     1  6 Aug19 ?        12:42:18 /usr/java/jdk1.6.0_45/bin/java -Djava.util.logging.config.file=/usr/apache-tomcat-7.0.42/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -XXermSize=64M -XX:MaxPermSize=512m -Xms512m -Xmx2048m -Djava.awt.headless=true -server -XX:+HeapDumpOnOutOfMemoryError -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -agentpath:/usr/jprofiler7/bin/linux-x64/libjprofilerti.so=port=8849,nowait -Djava.endorsed.dirs=/usr/apache-tomcat-7.0.42/endorsed -classpath /usr/apache-tomcat-7.0.42/bin/bootstrap.jar:/usr/apache-tomcat-7.0.42/bin/tomcat-juli.jar -Dcatalina.base=/usr/apache-tomcat-7.0.42 -Dcatalina.home=/usr/apache-tomcat-7.0.42 -Djava.io.tmpdir=/usr/apache-tomcat-7.0.42/temp org.apache.catalina.startup.Bootstrap start

其中,-Dcatalina.home=/usr/apache-tomcat-7.0.42 就是我需要的一段文字,我要如何截取到这段字符串?

下面是我写的一段命令,虽然比较笨,可是能够实现

ps -ef |grep tomcat | awk '{for(i=1;i<=NF;i++) print '\n' $i}' | grep 'Dcatalina.home' | awk -F '=' '{print $NF}'

但是,把这段命令放到python中,会出现问题,所以,我想请教下各位,用什么方法可以不用循环打印所有的字符串,直接取到我需要的那段的?

ps:我需要的字符串的位置不是固定的。

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [报告]
发表于 2014-08-27 15:11 |只看该作者
回复 1# zhangblh

ps -ef |grep tomcat |  grep -oP -- "-Dcatalina[.]home=\S+"
   

论坛徽章:
0
3 [报告]
发表于 2014-08-27 15:42 |只看该作者
本帖最后由 love_shift 于 2014-08-27 15:42 编辑

python ? try
  1. from os import popen
  2. import re

  3. data = popen('ps -ef | grep tomcat').read()
  4. for Install_Dir in  re.findall(r'.*Dcatalina.home=(\S+)?',data):
  5.            print Install_Dir

复制代码

论坛徽章:
0
4 [报告]
发表于 2014-08-27 15:56 |只看该作者
回复 2# jason680


    多谢大神!

论坛徽章:
0
5 [报告]
发表于 2014-08-27 15:57 |只看该作者
回复 3# love_shift


    多谢!

论坛徽章:
14
15-16赛季CBA联赛之辽宁
日期:2019-06-16 15:47:3515-16赛季CBA联赛之广夏
日期:2016-08-13 21:24:352015亚冠之武里南联
日期:2015-07-07 17:37:372015亚冠之萨济拖拉机
日期:2015-07-06 17:07:482015亚冠之全北现代
日期:2015-06-04 13:54:272015亚冠之城南
日期:2015-05-21 15:43:212015年亚洲杯之伊朗
日期:2015-04-25 18:20:362015年亚洲杯之伊朗
日期:2015-04-20 16:06:052015年亚洲杯之科威特
日期:2015-03-07 12:51:26丑牛
日期:2014-12-30 10:26:38申猴
日期:2014-09-28 22:40:18金牛座
日期:2014-09-13 21:12:22
6 [报告]
发表于 2014-08-27 20:11 |只看该作者
本帖最后由 reb00t 于 2014-08-27 20:33 编辑
  1. ps -ef |grep tomcat|awk  -vRS=' ' '/-Dcatalina.home/{print $0}'
  2. -Dcatalina.home=/usr/apache-tomcat-7.0.42
复制代码
php:
  1. <?php
  2. $test = "ps -ef | grep -v grep |grep  tomcat";
  3. $output = shell_exec($test);

  4. $pa ='/-Dcatalina.home=[^\s]+/';
  5. preg_match($pa,$f, $matches);
  6. print_r($matches);
  7. ?>


  8. 结果:
  9. Array
  10. (
  11.     [0] => -Dcatalina.home=/usr/apache-tomcat-7.0.42
  12. )
复制代码

论坛徽章:
0
7 [报告]
发表于 2014-08-28 11:31 |只看该作者
回复 6# reb00t


    多谢!已经实现了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP