当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 11 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 莱鸟求教:sed命令批量删除指定的行……
帖子发表于 : 2015-07-05 19:03 

注册: 2015-06-17 10:22
帖子: 34
系统: Ubuntu 12.04 LTS
送出感谢: 0 次
接收感谢: 0 次
老实说,外事不举问百度,我也问过咯,不过真心看不懂…… :em20 :em20
我的要求蛮简单,我喜欢看小说,于是通过firefox的插件downthemall,把某个网站的所有小说页面下载到了一个文件夹下面,但是下载后的页面存在一个问题,那就是本地文件和网页文件显示上面差距极大。现在我想把这个文件夹下面所有的3-81行,83-104行,107-124行都给删除掉,不知道怎么入手,拜托大虾们直接给个能用的命令行吧……呃,一个命令行兴许不可能直接完成,一次一个范围也是可以的,关键在于怎么轮询当前目录下面所有的文件,另外,麻烦尽可能的讲解一下,谢谢!
呃,现在碰到一个新问题:俺有个文件,里面有N多括号,想把里面的括号给整掉要怎么做呀?比如:
代码:
cat one

    42+(16-5)=1
    (52+6)-9=3
    12+(16+5)-(12+3)=5
我想要变成:
    42+=1
    -9=3
    12+-=5
怎么办呀?
:em03 :em03 :em03 :em03 :em03


最后由 rock_ace 编辑于 2015-08-29 19:11,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 莱鸟求教:sed命令批量删除指定的行……
帖子发表于 : 2015-07-05 19:19 
头像

注册: 2011-09-13 10:31
帖子: 157
送出感谢: 1
接收感谢: 17
find+xargs 应该可以,可以搜索一下或者参考这里


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 莱鸟求教:sed命令批量删除指定的行……
帖子发表于 : 2015-07-05 19:25 

注册: 2015-06-17 10:22
帖子: 34
系统: Ubuntu 12.04 LTS
送出感谢: 0 次
接收感谢: 0 次
duguyipiao 写道:
find+xargs 应该可以,可以搜索一下或者参考这里

不能直接给个命令行吗?


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 莱鸟求教:sed命令批量删除指定的行……
帖子发表于 : 2015-07-05 20:11 

注册: 2015-06-17 10:22
帖子: 34
系统: Ubuntu 12.04 LTS
送出感谢: 0 次
接收感谢: 0 次
呃,自己弄出来了,谢谢各位关注本贴的站友!
另外,把命令贴出来,作个备忘(用了三条命令):
sed -i 107,124d `find . -name "*.html"`
sed -i 83,104d `find . -name "*.html"`
sed -i 3,81d `find . -name "*.html"`
注意的是:
1、find . -name中,“.“和"-name“中间有个空格……
2、find . -name两边的'号,是不单引号,而是tab上面的那个符号。
-----------
大虾们别喷,知道你们懂,可俺不懂,俺就一鸟蛋,正学着呢……另外,如果有哪位大虾有更好的办法,也麻烦指点一下新人,谢谢!


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 莱鸟求教:sed命令批量删除指定的行……
帖子发表于 : 2015-07-05 20:50 

注册: 2015-06-17 10:22
帖子: 34
系统: Ubuntu 12.04 LTS
送出感谢: 0 次
接收感谢: 0 次
备忘:如何从网络上下载小说并进阶处理:
1、打开小说index.html,并用downthemall插件下载至目录,例:从http://www.cishuge.com/read/2/2111/下载的名为“超级提取”的小说,至主目录下“下载/超级提取“。
2、删除指定行,如第1行、3-81行,83-104行,107-124行(删除的时候从高行位到低行位,否则需要调整行号,不划算……):
sed -i 107,124d `find . -name "*.html"`
sed -i 83,104d `find . -name "*.html"`
sed -i 3,81d `find . -name "*.html"`
sed -i 1d `find . -name "*.html"`
3、合并所有页面:
  cat `la` > 超级提取.txt
4、用gedit 编辑并删除不需要的内容(当然也可以用sed命令,不过这里用文本编辑器处理会比较快,这里主要处理空格、换行符并删除一些放屁之流的页面套话)。
5、删除所有以空格组成的空行(因空行太多,用gedit处理比较慢,可能会死机):
sed -i /^[[]]*$/d 超级提取.txt
6、弄完后,再用FBReader小说阅读器打开就可以开开心心地看小说咯……
呼……我就看一小说,容易嘛我?


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 莱鸟求教:sed命令批量删除指定的行……
帖子发表于 : 2015-07-05 21:30 
头像

注册: 2011-09-13 10:31
帖子: 157
送出感谢: 1
接收感谢: 17
rock_ace 写道:
2、删除指定行,如第1行、3-81行,83-104行,107-124行(删除的时候从高行位到低行位,否则需要调整行号,不划算……):
sed -i 107,124d `find . -name "*.html"`
sed -i 83,104d `find . -name "*.html"`
sed -i 3,81d `find . -name "*.html"`
sed -i 1d `find . -name "*.html"`


sed 可以多重匹配,应该可以这样
代码:
sed -i "1d;3,81d;83,104d;107,124d" `find . -name "*.html"`


我也没仔细研究过sed,只是看过这里的介绍。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 莱鸟求教:sed命令批量删除指定的行……
帖子发表于 : 2015-07-06 11:48 

注册: 2007-12-05 10:57
帖子: 1003
地址: 金山
系统: ubuntu14.04
送出感谢: 13
接收感谢: 62
可直接用shell文件名扩展
比如要对某目录下的所有文件进行操作
cd /your_target_dir
sed -i 'command' *

这里的星号*会自动扩展为当前目录下的所有文件
如果只要对当前目录下的html后缀的文件进行操作,可写为

sed -i 'command' *html


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 莱鸟求教:sed命令批量删除指定的行……
帖子发表于 : 2015-07-07 7:36 

注册: 2015-06-17 10:22
帖子: 34
系统: Ubuntu 12.04 LTS
送出感谢: 0 次
接收感谢: 0 次
cao627 写道:
可直接用shell文件名扩展
比如要对某目录下的所有文件进行操作
cd /your_target_dir
sed -i 'command' *

这里的星号*会自动扩展为当前目录下的所有文件
如果只要对当前目录下的html后缀的文件进行操作,可写为

sed -i 'command' *html

呃,我试过了,貌似不行的啊?我写的是:
代码:
sed -i 107,124d *.html

你确定有效吗?为毛我执行后没有反映?


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 莱鸟求教:sed命令批量删除指定的行……
帖子发表于 : 2015-07-07 7:43 

注册: 2015-06-17 10:22
帖子: 34
系统: Ubuntu 12.04 LTS
送出感谢: 0 次
接收感谢: 0 次
rock_ace 写道:
cao627 写道:
可直接用shell文件名扩展
比如要对某目录下的所有文件进行操作
cd /your_target_dir
sed -i 'command' *

这里的星号*会自动扩展为当前目录下的所有文件
如果只要对当前目录下的html后缀的文件进行操作,可写为

sed -i 'command' *html

呃,我试过了,貌似不行的啊?我写的是:
代码:
sed -i 107,124d *.html

你确定有效吗?为毛我执行后没有反映?

又搞了一遍,结果发现竟然成功通过,可为毛上次不能通过呢?俺才40岁,不可能出现老年痴呆症状呀?我确定上次我的输入没有错的,为此,我还专门看了.bash_history……笨兔,为你伤心为你哭,你到底要搞么啊?我独自一人划圈圈支咯……
不过仍旧要谢谢你!谢谢楼上给答案的所有大虾!


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 莱鸟求教:sed命令批量删除指定的行……
帖子发表于 : 2015-08-09 19:12 

注册: 2015-06-17 10:22
帖子: 34
系统: Ubuntu 12.04 LTS
送出感谢: 0 次
接收感谢: 0 次
备忘:
  1、可以利用windows的记事本,将文件内容存诸为utf-8格式,在ubuntu里就可以无乱码打开了(cat、sed等命令亦有效);
  2、利用下列命令可以删除以“全文字更新”开头的行,如果不加^,则可以删除包含“全文字更新”的行:
代码:
sed -i '/^全文字更新/'d 小说名.txt


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 莱鸟求教:sed命令批量删除指定的行……
帖子发表于 : 2015-09-27 8:36 

注册: 2015-06-17 10:22
帖子: 34
系统: Ubuntu 12.04 LTS
送出感谢: 0 次
接收感谢: 0 次
备忘:
  在windows中创建的文本文件直接在linux中编辑时,有时会出现乱码的情况,这个时候要将此文件转换成linux能够识别的文件,那么,如何将GB2312文本转成UTF-8文本呢?有以下两种方法:
代码:
iconv -f "gbk" -t "utf-8" infile > outfile
piconv -f "gbk" -t "utf-8" infile > outfile

  通过以上代码,可以将文件转成linux能够识别的文件,接下来就可以使用cat或者sed命令了。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 11 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译