查找包含特定字符的文件,并删除该行。这个命令怎么写,找到了,不知道怎么删。[内详]

sh/bash/dash/ksh/zsh等Shell脚本
回复
sk1418
帖子: 229
注册时间: 2007-07-01 17:36
系统: (En):System
来自: (En):address
联系:

查找包含特定字符的文件,并删除该行。这个命令怎么写,找到了,不知道怎么删。[内详]

#1

帖子 sk1418 » 2009-01-20 23:54

比如:
可以用find |xargs grep找到某目录下包含 “#ubuntu forum"的所有文件,下面我要从这些找到的文件中删除包含这个字串的行。查了一下 sed 可以删除行,但是保存不了文件。另外不知道怎么让FIND和SED一起用,哪位给提个醒,怎么整?谢谢了。
---
regards,

Kent
头像
roylez
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海

Re: 查找包含特定字符的文件,并删除该行。这个命令怎么写,找到了,不知道怎么删。[内详]

#2

帖子 roylez » 2009-01-21 6:43

sed -i -e '/<pattern>/d' <file>

-i 就是inplace的意思
弄个dropbox空间来备份文件或者做私人代码服务器
配置:[url]git://github.com/roylez/dotfiles.git[/url]
主页:http://roylez.heroku.com
各种稀奇玩意儿:http://dooloo.info
sk1418
帖子: 229
注册时间: 2007-07-01 17:36
系统: (En):System
来自: (En):address
联系:

Re: 查找包含特定字符的文件,并删除该行。这个命令怎么写,找到了,不知道怎么删。[内详]

#3

帖子 sk1418 » 2009-01-21 16:20

谢谢roylez,昨天晚上我也找到了这个-i, 但是现在我不太知道如何把查到的文件传给sed 比如
find -type f | xargs grep "theStringIneed"
这样可以找到所有文件. 用sed -i "theStringIneed" 可以删除行,怎么把那些文件都传给SED呢?一行命令能解决么? 是不是find | xargs grep | 然后cut 出文件名再sed? 还是应该怎么着弄?
还请给指点一下。

谢谢。
---
regards,

Kent
sk1418
帖子: 229
注册时间: 2007-07-01 17:36
系统: (En):System
来自: (En):address
联系:

Re: 查找包含特定字符的文件,并删除该行。这个命令怎么写,找到了,不知道怎么删。[内详]

#4

帖子 sk1418 » 2009-01-21 16:29

刚才测试了一下,find,grep,cut, sed可以实现:

$ find -type f|xargs grep "theString I need"|cut -d: -f1 |xargs sed -i "/theStringIneed/d"

是不是有更好办法呢?觉得这个办法有点笨。请知道的朋友再指点一下在下。谢谢
---
regards,

Kent
头像
roylez
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海

Re: 查找包含特定字符的文件,并删除该行。这个命令怎么写,找到了,不知道怎么删。[内详]

#5

帖子 roylez » 2009-01-21 16:53

sk1418 写了:刚才测试了一下,find,grep,cut, sed可以实现:

$ find -type f|xargs grep "theString I need"|cut -d: -f1 |xargs sed -i "/theStringIneed/d"

是不是有更好办法呢?觉得这个办法有点笨。请知道的朋友再指点一下在下。谢谢
grep 可以 -r

grep -r . "theString I need"|cut -d: -f1 |uniq|xargs sed -i "/theStringIneed/d"
弄个dropbox空间来备份文件或者做私人代码服务器
配置:[url]git://github.com/roylez/dotfiles.git[/url]
主页:http://roylez.heroku.com
各种稀奇玩意儿:http://dooloo.info
sk1418
帖子: 229
注册时间: 2007-07-01 17:36
系统: (En):System
来自: (En):address
联系:

Re: 查找包含特定字符的文件,并删除该行。这个命令怎么写,找到了,不知道怎么删。[内详]

#6

帖子 sk1418 » 2009-01-21 17:04

的确阿,如果按照文件类型来find,这个find是有点多余。看来find和grep搭配的时候应该提前动个脑筋哈。
不过没有find,这个 uniq就必要了。

谢谢你。

另外问句闲玩儿的,你的头像是朝鲜人民的领袖金正日么?
---
regards,

Kent
头像
roylez
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海

Re: 查找包含特定字符的文件,并删除该行。这个命令怎么写,找到了,不知道怎么删。[内详]

#7

帖子 roylez » 2009-01-21 19:10

对,大家都叫我“金主席” :em05
弄个dropbox空间来备份文件或者做私人代码服务器
配置:[url]git://github.com/roylez/dotfiles.git[/url]
主页:http://roylez.heroku.com
各种稀奇玩意儿:http://dooloo.info
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 查找包含特定字符的文件,并删除该行。这个命令怎么写,找到了,不知道怎么删。[内详]

#8

帖子 eexpress » 2009-01-21 21:42

for i in *; do sed -i xxxx; done
打倒金。居然得意了。
● 鸣学
sk1418
帖子: 229
注册时间: 2007-07-01 17:36
系统: (En):System
来自: (En):address
联系:

Re: 查找包含特定字符的文件,并删除该行。这个命令怎么写,找到了,不知道怎么删。[内详]

#9

帖子 sk1418 » 2009-01-22 4:39

eexpress, 能说详细点么? 我觉得也能用循环,但是不知道咋整。
谢谢。
---
regards,

Kent
回复