Chinaunix

标题: perl关于文本域的问题 [打印本页]

作者: lxy9805287    时间: 2007-01-26 14:17
标题: perl关于文本域的问题
用awk过滤文本的域很熟练, 请教下如果用perl里怎么准确的过滤一个想要的域呢?
谢谢
例如一个进程有时候启动后的行是这样
23110 ?        S     26:36 /var/java/bin/java   我就把它split成一个数组,然后取 $arrary[0]
但是有时候进程重启后会变成下面这样
   5446 ?        S    247:23 /var/java/bin/java -Xmx2048m   清注意,5446前面有个空格,然后就取不到了

动态的变化,这个个很郁闷

随后就导致了很大的麻烦,

[ 本帖最后由 lxy9805287 于 2007-1-26 14:18 编辑 ]
作者: 兰花仙子    时间: 2007-01-26 15:24
原帖由 lxy9805287 于 2007-1-26 14:17 发表
用awk过滤文本的域很熟练, 请教下如果用perl里怎么准确的过滤一个想要的域呢?
谢谢
例如一个进程有时候启动后的行是这样
23110 ?        S     26:36 /var/java/bin/java   我就把它split成一个数组,然后取 $a ...


split之前先执行下 s/^\s+|\s+$//g 把行首尾的空格去掉.
作者: zoebegin    时间: 2007-01-27 00:34
好像用trim函数也是可以去掉空格的。学习Perl,最重要的是:做一件事情,可以有很多办法...
作者: ulmer    时间: 2007-01-27 00:48
原帖由 zoebegin 于 2007-1-27 00:34 发表
好像用trim函数也是可以去掉空格的。学习Perl,最重要的是:做一件事情,可以有很多办法...


Hi,
perl has no builtin function such like trim() that PHP has.

the simplest wayis like FL.2

--ulmer
作者: lovesaka    时间: 2007-01-27 01:07
原帖由 lxy9805287 于 2007-1-26 14:17 发表
用awk过滤文本的域很熟练, 请教下如果用perl里怎么准确的过滤一个想要的域呢?
谢谢
例如一个进程有时候启动后的行是这样
23110 ?        S     26:36 /var/java/bin/java   我就把它split成一个数组,然后取 $a ...

perl -ane 'print $F[0],"\n"'
如果想在脚本里用
print +(s/^\s//,split /\s+/)[1] while <>;




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2