Chinaunix

标题: 请问如何抽取特征字的下一行? [打印本页]

作者: Eisen    时间: 2002-08-22 16:19
标题: 请问如何抽取特征字的下一行?
在AIX上想看看各process占用的内存大小,用svmon -P看。
但是这样显示的内容太多了,我只需要出现&quotID"那一行的下一行就够了。
但是这一行里只有数据,没有特征字,只能依靠上一行的特征字来区分。
用svmon -P|grep PID以后又应该怎么写呢?
请指点。谢谢。
作者: bjchenxu    时间: 2002-08-22 16:43
标题: 请问如何抽取特征字的下一行?
抛砖引玉

编辑文件awkfile
#!/usr/bin/awk -f

BEGIN {temp=0}
{if(temp!=0} print}
{temp=index($0,&quotID&quot}

然后chmod 700 awkfile
svmon -P | awkfile

OVER!
作者: Eisen    时间: 2002-08-22 17:00
标题: 请问如何抽取特征字的下一行?
首先要感谢。
不过……似乎没有输出……
作者: bjchenxu    时间: 2002-08-22 17:26
标题: 请问如何抽取特征字的下一行?
呵呵,我这里可是测试通过的
作者: bjchenxu    时间: 2002-08-22 17:49
标题: 请问如何抽取特征字的下一行?
不看不知道,你已经是精灵了,我要努力成为精灵,呵呵
作者: valentine    时间: 2002-08-22 18:01
标题: 请问如何抽取特征字的下一行?
with awk:
svmon -P|awk '/PID/{getline;print}'

with sed:
svmon -P|sed -n '/PID/{n;p;}'
作者: bjchenxu    时间: 2002-08-23 09:31
标题: 请问如何抽取特征字的下一行?
果然比我的简单,pfpf
用sed的,我在bash下怎么报错呀?
作者: valentine    时间: 2002-08-23 10:28
标题: 请问如何抽取特征字的下一行?
我在cygwin的bash下试过.没问题啊,这么简单的语法.

作者: bjchenxu    时间: 2002-08-23 10:37
标题: 请问如何抽取特征字的下一行?
奇怪,{N:p&#59;}是什么意思呀,手册里面没有找到
作者: valentine    时间: 2002-08-23 10:46
标题: 请问如何抽取特征字的下一行?
N是到下一行,p是显示啊.
作者: bjchenxu    时间: 2002-08-23 11:02
标题: 请问如何抽取特征字的下一行?
呵呵,我明白了,你的N后面应该是&#59;,但是写成:了,所以报错
另外,错误虽然没有了
结果有点问题

$ps
   PID TTY      TIME CMD
24451 pts/8    0:00 csh
25202 pts/8    0:00 ps
$ps | sed '/PID/{N&#59;p&#59;}'
   PID TTY      TIME CMD
24451 pts/8    0:00 csh
   PID TTY      TIME CMD
24451 pts/8    0:00 csh
25203 pts/8    0:00 ps
25204 pts/8    0:00 sed

why?
作者: valentine    时间: 2002-08-23 21:54
标题: 请问如何抽取特征字的下一行?
要加 -n啊.
作者: wws75111    时间: 2002-08-24 16:05
标题: 请问如何抽取特征字的下一行?
very good! 非常实用。
作者: valentine    时间: 2002-08-25 19:31
标题: 请问如何抽取特征字的下一行?
那就收入精华了.
作者: bjchenxu    时间: 2002-08-26 09:38
标题: 请问如何抽取特征字的下一行?
我刚想到-n,斑竹就说了
唉,pfpf
作者: jerryesquire    时间: 2002-08-26 17:34
标题: 请问如何抽取特征字的下一行?
Good!
作者: danoyang    时间: 2002-08-29 10:04
标题: 请问如何抽取特征字的下一行?
那不止下一行呢,比如下x行呢

作者: bjchenxu    时间: 2002-08-29 10:08
标题: 请问如何抽取特征字的下一行?
svmon -P|awk '/PID/ {for(i=0&#59;i<x&#59;i++) {getline&#59;print}}'
作者: danoyang    时间: 2002-08-29 10:24
标题: 请问如何抽取特征字的下一行?
thx
bjchenxu和goodboy 兄风头正劲啊,SHELL版需要你们a
作者: bjchenxu    时间: 2002-08-29 10:31
标题: 请问如何抽取特征字的下一行?
shell版更需要向你这样专心学习的朋友
其实回答问题的过程就是学习的过程,呵呵
作者: hell    时间: 2002-09-02 19:40
标题: 请问如何抽取特征字的下一行?
svmon -P|grep -n PID|awk '{cmd=sprintf(&quot;svmon -P|head -%d|tail -1&quot;,$1)&#59; system(cmd)}'
请多指教
作者: bjchenxu    时间: 2002-09-03 09:36
标题: 请问如何抽取特征字的下一行?
我测试了一下Hell的脚本,是打印带有PID的那一行
需求是打印PID行的下n行
怎么样,改进一下吧
作者: hell    时间: 2002-09-03 13:26
标题: 请问如何抽取特征字的下一行?
svmon -P|grep -n PID|awk '{cmd=sprintf(&quot;svmon -P|head -%d|tail -%d&quot;,$1+1,n)&#59; system(cmd)}'

作者: bjchenxu    时间: 2002-09-03 13:37
标题: 请问如何抽取特征字的下一行?
svmon -P|grep -n PID|awk '{cmd=sprintf(&quot;svmon -P|head -%d|tail -%d&quot;,$1+n,n)&#59; system(cmd)}'

                                                                       ^
作者: nkliyong    时间: 2002-12-12 15:40
标题: 请问如何抽取特征字的下一行?
我要是就不想要这些行呢?呵呵
作者: gprsphone    时间: 2002-12-13 12:44
标题: 请问如何抽取特征字的下一行?
[这个贴子最后由gprsphone在 2002/12/13 12:45pm 编辑]

grep has the function to get the line after the designed lines.

grep -A2 PID yourfile

grep -A2 PID yourfile |grep -v PID

作者: nkliyong    时间: 2002-12-13 14:33
标题: 请问如何抽取特征字的下一行?
我的意思是不想要一个文件中包含特征字符串的行和其前后几行
作者: nkliyong    时间: 2002-12-13 14:35
标题: 请问如何抽取特征字的下一行?
我想肯定有更简单的方法,请赐教

#本程序将按给定的字符串在一文件中将其前后若干行删除
#在h80机器上测试通过,对原有10万行的文本文件,删除其中8万行,
#每个特征串删除前后共4行,即共有2万个指定字符串需删除,用时6分钟
cp comlog021211 abab
# M 前M行
# N 后N行
# string1 指定字符串
M=3
N=0
string1=&quot;发送文件通讯失败&quot;
# count 为每次向下走的步数
count=`expr $M + $N + 1`
count_ini=0
eval grep -n $string1 abab | awk -F &quot;:&quot; '{print $1}' > acac
#为了删除最后一行,在后在加一行
count_tmp=`tail -1 acac`
echo $count_tmp >> acac
#为bbb,pre赋值
count_tmp=`head -1 acac`
bbb=$count_tmp
pre=`expr $count_tmp - $count`
while read -r aaa
do           
  ccc=`expr $pre + $count`
        if [ $aaa != $ccc ]
        then
                CCC=`expr $bbb - $count_ini - $M`
                DDD=`expr $pre - $count_ini + $N`
                eval sed '${CCC},${DDD}d' abab > adad
                count_ini=`expr $count_ini + $DDD - $CCC + 1`
                cp adad abab
                bbb=$aaa
        fi
        pre=$aaa
done < acac
作者: nkliyong    时间: 2002-12-18 13:22
标题: 请问如何抽取特征字的下一行?
我想肯定有更简单的方法,请赐教

#本程序将按给定的字符串在一文件中将其前后若干行删除
#在h80机器上测试通过,对原有10万行的文本文件,删除其中8万行,
#每个特征串删除前后共4行,即共有2万个指定字符串需删除,用时6分钟
cp comlog021211 abab
# M 前M行
# N 后N行
# string1 指定字符串
M=3
N=0
string1=&quot;aaaaaaaaaaaaa&quot;
# count 为每次向下走的步数
count=`expr $M + $N + 1`
count_ini=0
eval grep -n $string1 abab | awk -F &quot;:&quot; '{print $1}' > acac
#为了删除最后一行,在后在加一行
count_tmp=`tail -1 acac`
echo $count_tmp >> acac
#为bbb,pre赋值
count_tmp=`head -1 acac`
bbb=$count_tmp
pre=`expr $count_tmp - $count`
while read -r aaa
do           
ccc=`expr $pre + $count`
       if [ $aaa != $ccc ]
       then
               CCC=`expr $bbb - $count_ini - $M`
               DDD=`expr $pre - $count_ini + $N`
               eval sed '${CCC},${DDD}d' abab > adad
               count_ini=`expr $count_ini + $DDD - $CCC + 1`
               cp adad abab
               bbb=$aaa
       fi
       pre=$aaa
done < acac






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