想实现自动文件编辑,删除其中的不需要段落,请教高手如何实现,sed如何输出查找到的行号?

sh/bash/dash/ksh/zsh等Shell脚本
回复
avcenter
帖子: 4
注册时间: 2011-05-18 10:09
送出感谢: 0
接收感谢: 0

想实现自动文件编辑,删除其中的不需要段落,请教高手如何实现,sed如何输出查找到的行号?

#1

帖子 avcenter » 2011-05-18 10:49

有如下的文本:
<list item file="1"
file is "adobe.pdf"
/list>
<list item file="2"
file is "adobe2.pdf"
/list>

<list item file="3"
file is "adobe3.pdf"
/list>
<list item file="4"
file is "adobe4.pdf"
/list>
文本可能很长,如果我需要的文件存在另一个文件need中,比如含有 adobe3.pdf,现在需要一个脚本删除其它的不需要的list item段落,使输出如下,请教脚本应该如何编写?多谢各位。

<list item file="3"
file is "adobe3.pdf"
/list>
头像
qgymib
帖子: 541
注册时间: 2010-04-02 16:44
系统: openSUSE 13.2 x64
送出感谢: 2 次
接收感谢: 11 次

Re: 想实现自动文件编辑,删除其中的不需要段落,请教高手如何实现,sed如何输出查找到的行号?

#2

帖子 qgymib » 2011-05-18 11:02

反正正则表达式能够实现。不过要是对pdf进行操作……问ee :em02
正在建设中的个人博客
avcenter
帖子: 4
注册时间: 2011-05-18 10:09
送出感谢: 0
接收感谢: 0

Re: 想实现自动文件编辑,删除其中的不需要段落,请教高手如何实现,sed如何输出查找到的行号?

#3

帖子 avcenter » 2011-05-18 11:26

感谢你的回复。
没有PDF文件操作的意思,只不过是个文件的例子。关键是如何删除adobe4.pdf文件行和之前的<list和和之后的/list>行
fnan
帖子: 919
注册时间: 2009-07-01 22:04
送出感谢: 0
接收感谢: 13 次

Re: 想实现自动文件编辑,删除其中的不需要段落,请教高手如何实现,sed如何输出查找到的行号?

#4

帖子 fnan » 2011-05-18 21:57

看来只是用need文本作为匹配模式,然后输出上下文:
grep -C 1 -F -f need.txt 如下的文本.txt
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 想实现自动文件编辑,删除其中的不需要段落,请教高手如何实现,sed如何输出查找到的行号?

#5

帖子 eexpress » 2011-05-18 22:33

awk用"/list>\n"分段,判断带adobe3的,输出就是。
● 鸣学
avcenter
帖子: 4
注册时间: 2011-05-18 10:09
送出感谢: 0
接收感谢: 0

Re: 想实现自动文件编辑,删除其中的不需要段落,请教高手如何实现,sed如何输出查找到的行号?

#6

帖子 avcenter » 2011-05-18 22:48

楼上可否就awk分段举个例子,查了许多资料,也许没找对,反正没找到什么.

多谢,如果能就上面所述直接给出语句,就更加感激了.再次感谢你的帮助. :em01
死亡阴影
帖子: 130
注册时间: 2007-11-28 8:52
送出感谢: 0
接收感谢: 1 次
联系:

Re: 想实现自动文件编辑,删除其中的不需要段落,请教高手如何实现,sed如何输出查找到的行号?

#7

帖子 死亡阴影 » 2011-05-19 21:27

只输出?
<list item file="3"
file is "adobe3.pdf"
/list>

是否可以匹配 关键字 adobe3.pdf然后 显示其上下两行呢?
#!/bin/bash
line=`cat -n 这个文本|grep adobe3.pdf|awk '{print $1}'`
然后用sed输出
$line-1
$line
$line+1
具体sed 忘记了 :em20
回复

回到 “Shell脚本”