LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 888|回复: 9

这个脚本怎么写?

[复制链接]
发表于 2003-10-22 20:25:02 | 显示全部楼层 |阅读模式
文本内容
abcv
tyjhkk
123456
789789
123789
kljkjl

输出包含字符串:“8978‘的一行,以及该行的前面一行
请高手指点
发表于 2003-10-22 22:24:14 | 显示全部楼层
笨方法 ;)
  1. [/home/javalee/myshell]cat tmp
  2. abcv
  3. tyjhkk
  4. 123456
  5. 789789
  6. 123789
  7. kljkjl
  8. [/home/javalee/myshell]cat filename
  9. #!/bin/bash
  10. n=$(cat -n tmp|grep 8978|cut -f1)
  11. m=$((n-1))
  12. cat tmp|sed -n "${m},${n}p"
  13. [/home/javalee/myshell]bash filename
  14. 123456
  15. 789789
复制代码
发表于 2003-10-22 23:39:32 | 显示全部楼层
192# cat file | grep -1 "9789" | sed -n '1,2p'
123456
789789
发表于 2003-10-22 23:44:05 | 显示全部楼层
最初由 angelp_9312 发表
192# cat file | grep -1 "9789" | sed -n '1,2p'
123456
789789

经典!
是根据上下文来搜索的吧~~,佩服~~
出自:
  1. grep --help
  2. ...
  3.   -C, --context=NUM         print NUM lines of output context
  4.   -NUM                      same as --context=NUM
  5. ...
复制代码
发表于 2003-10-23 09:34:24 | 显示全部楼层
faint,grep 不光有 -C -number 的参数,还有 -B -A 呀,-B 就是专门指定前面(before)多少行的呀,直接用这个参数不是更省事吗:
grep -B1 key files
发表于 2003-10-23 09:56:52 | 显示全部楼层
最初由 idkey 发表
faint,

:sorry
...
Context control:
  -B, --before-context=NUM  print NUM lines of leading context
  -A, --after-context=NUM   print NUM lines of trailing context
  -C, --context=NUM         print NUM lines of output context
  -NUM                      same as --context=NUM
....
 楼主| 发表于 2003-10-23 10:34:03 | 显示全部楼层
非常感谢各位的指导
昨天我干了两个小时的工作现在我5分钟搞好了
再次感谢热心的朋友
grep -1
就可以了,为什么加一个sed呢?
发表于 2003-10-23 11:27:56 | 显示全部楼层
grep -num是用来显示上下几行的,
发表于 2003-10-23 12:32:39 | 显示全部楼层
grep -B 1 8978 a.txt
发表于 2003-10-24 11:53:07 | 显示全部楼层
最初由 angelp_9312 发表
192# cat file | grep -1 "9789" | sed -n '1,2p'
123456
789789


刚有空,嗯,有进步!! 继续努力!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表