"错行读取"

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
yjcong
帖子: 2470
注册时间: 2006-02-28 3:11

"错行读取"

#1

帖子 yjcong » 2013-06-04 17:59

这个, 我不晓得是哪个术语对应, 所以加了个引号.

问题有2个,

1) 在一个文件中, 如何在定位的"abcxyz"后, 如何显示其下一行的内容. 若是有很多个, 如何?

2) 假设搜索的关键字在第n行, 如何同时显示第n-1, n, n+1行的内容

thx
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.
头像
yjcong
帖子: 2470
注册时间: 2006-02-28 3:11

Re: "错行读取"

#2

帖子 yjcong » 2013-06-04 21:02

2) grep -A 3 -B 5 abcxyz filename
前后(after)3行, 前(before)5行

grep -C 2 abcxyz filename
前后2行
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.
头像
naturalaw
帖子: 1360
注册时间: 2011-09-06 22:04

Re: "错行读取"

#3

帖子 naturalaw » 2013-06-05 0:08

只剩下问题1了吗? 请提供测试用例。 :em01
keyword 是foo
恕我windows路径。
如果你唯一的工具是把锤子,你往往就会把一切问题都看成钉子
最近用python多。
foo
akjkdjkejwl
rkewjlkrjwelk
foo
fewkjk1kl1l2l1212l1
fewkjrkewjn mnfmenw
ewkjrkjwl
barfoofwerjwekjr
barofwerjwekj

[python]#!/usr/bin/env python3
import re

def fun(c):
for i in c:
if re.findall('foo',i):
try:
print(c[c.index(i)+1])
c[c.index(i)] += 'someword'
except:
print("keyword is in the last line")

fun(open('d:/1').readlines())[/python]
上次由 naturalaw 在 2013-06-07 12:50,总共编辑 1 次。
  • The eternal law
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: "错行读取"

#4

帖子 lilydjwg » 2013-06-05 14:05

naturalaw 写了: [python]#!/usr/bin/env python3
import re

def fun(c):
for i in c:
if re.findall('foo',i):
try:
print(c[c.index(i)+1])
c[c.index(i)] += 'someword'
except:
print("keyword is in the last line")

f=open('d:/1')
c=[]
[c.append(i) for i in f.readlines()]
fun(c)[/python]
[c.append(i) for i in f.readlines()] 这行是在干什么呢……
为什么不 c = f.readlines() 呢?

PS: 那谁博客的评论系统还没配置好。
头像
naturalaw
帖子: 1360
注册时间: 2011-09-06 22:04

Re: "错行读取"

#5

帖子 naturalaw » 2013-06-05 15:57

oh, no. 居然不知道那个返回的是列表。。。谢谢提醒。 :em20
  • The eternal law
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: "错行读取"

#6

帖子 aerofox » 2013-06-05 20:03

第一个问题

代码: 全选

sed -n '/abcxyz/{n;p}'
头像
yjcong
帖子: 2470
注册时间: 2006-02-28 3:11

Re: "错行读取"

#7

帖子 yjcong » 2013-06-05 21:04

谢谢LS各位, 其实, 第1个问题也包含在第2个之内

grep -A 1 abcxzy filename
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.
回复