sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??

sh/bash/dash/ksh/zsh等Shell脚本
头像
Adam_chen
帖子: 26
注册时间: 2012-03-17 20:35

sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??

#1

帖子 Adam_chen » 2012-03-19 23:02

如题!小弟~初学unix 操作系统!谢指导~~
Learn more!Communicate more!
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??

#2

帖子 枫叶饭团 » 2012-03-19 23:05

sed
头像
Adam_chen
帖子: 26
注册时间: 2012-03-17 20:35

Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??

#3

帖子 Adam_chen » 2012-03-19 23:33

枫叶饭团 写了:sed
恩呀!睡了先!明天去图书馆补这方面知识,上课没讲到!多谢提点啦
Learn more!Communicate more!
头像
Adam_chen
帖子: 26
注册时间: 2012-03-17 20:35

Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??

#4

帖子 Adam_chen » 2012-03-20 10:22

哈哈 看并测试了一个多小时!搞定啦!如下代码:

file文件的内容,如下:
1
123
2
3
4
删除123这行的方法:sed -i '/'`grep "12" file`'/d' file

附网上查到的资料:
如果有一个abc.txt文件,内容是:
aaa
bbb
ccc
ddd
eee
fff

如果要删除aaa,那么脚本可以这样写:
sed -i '/aaa/d' abc.txt
如果删除的是一个变量的值,假如变量是var,应该写成:
sed -i '/'"$var"'/d' abc.txt
Learn more!Communicate more!
zhpe78
帖子: 386
注册时间: 2008-10-11 22:41

Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??

#5

帖子 zhpe78 » 2012-03-20 10:23

这种操作方式有点危险,如果你有多行 有这个字符,那同样也会被干掉的......
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??

#6

帖子 eexpress » 2012-03-20 10:33

`grep "12" file`


:em20 :em20 :em20


你确信你这是使用sed?

:em04
● 鸣学
头像
Think1st
帖子: 45
注册时间: 2012-02-07 23:08

Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??

#7

帖子 Think1st » 2012-03-20 11:42

Adam_chen 写了:哈哈 看并测试了一个多小时!搞定啦!如下代码:

file文件的内容,如下:
1
123
2
3
4
删除123这行的方法:sed -i '/'`grep "12" file`'/d' file

附网上查到的资料:
如果有一个abc.txt文件,内容是:
aaa
bbb
ccc
ddd
eee
fff

如果要删除aaa,那么脚本可以这样写:
sed -i '/aaa/d' abc.txt
如果删除的是一个变量的值,假如变量是var,应该写成:
sed -i '/'"$var"'/d' abc.txt
file文件的内容如果如下就搞不定了。
1
123
2
3
4
1234
删除包行"123"的行,用

代码: 全选

sed -i '/123/d' file
在这里,问题比答案更抢手。
头像
Adam_chen
帖子: 26
注册时间: 2012-03-17 20:35

Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??

#8

帖子 Adam_chen » 2012-03-20 12:41

zhpe78 写了:这种操作方式有点危险,如果你有多行 有这个字符,那同样也会被干掉的......
确实有这个问题!不然也想不到更好的办法了!但是我的作业里面的话每一行都是独一无二的!所以可以采用
Learn more!Communicate more!
头像
Adam_chen
帖子: 26
注册时间: 2012-03-17 20:35

Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??

#9

帖子 Adam_chen » 2012-03-20 12:42

eexpress 写了:`grep "12" file`


:em20 :em20 :em20


你确信你这是使用sed?

:em04
这个反引号不是可以的吗?? :em09
Learn more!Communicate more!
头像
Adam_chen
帖子: 26
注册时间: 2012-03-17 20:35

Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??

#10

帖子 Adam_chen » 2012-03-20 12:43

Think1st 写了:
Adam_chen 写了:哈哈 看并测试了一个多小时!搞定啦!如下代码:

file文件的内容,如下:
1
123
2
3
4
删除123这行的方法:sed -i '/'`grep "12" file`'/d' file

附网上查到的资料:
如果有一个abc.txt文件,内容是:
aaa
bbb
ccc
ddd
eee
fff

如果要删除aaa,那么脚本可以这样写:
sed -i '/aaa/d' abc.txt
如果删除的是一个变量的值,假如变量是var,应该写成:
sed -i '/'"$var"'/d' abc.txt
file文件的内容如果如下就搞不定了。
1
123
2
3
4
1234
删除包行"123"的行,用

代码: 全选

sed -i '/123/d' file
恩恩 具体情况看你自己要找的什么内容!其实我作业里就是独一无二的名字变量~
Learn more!Communicate more!
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??

#11

帖子 aerofox » 2012-03-20 21:17

代码: 全选

sed -i '/'`grep "12" file`'/d' file
不能不说这种用法非常非常另类,一个 grep 夹在里面,没有带来任何好处,倒可能添乱。
头像
Adam_chen
帖子: 26
注册时间: 2012-03-17 20:35

Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??

#12

帖子 Adam_chen » 2012-03-20 22:20

aerofox 写了:

代码: 全选

sed -i '/'`grep "12" file`'/d' file
不能不说这种用法非常非常另类,一个 grep 夹在里面,没有带来任何好处,倒可能添乱。
唉 实在没想到更好的办法
Learn more!Communicate more!
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??

#13

帖子 aerofox » 2012-03-20 22:57

7楼不是已经给出了正统的方法了吗?
头像
Adam_chen
帖子: 26
注册时间: 2012-03-17 20:35

Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??

#14

帖子 Adam_chen » 2012-03-20 23:38

aerofox 写了:7楼不是已经给出了正统的方法了吗?
七楼?莫非把找到的东西赋值给一个字符串变量?其实题目差不多已知一串字符串!然后在文件中找到该字符串所在的行!貌似也没有啥更好的办法诶
Learn more!Communicate more!
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??

#15

帖子 aerofox » 2012-03-21 6:25

夹在 grep 命令两端的那两个 / 干什么用的?这就是查找呀,为什么还要走 grep 绕一圈呢?
如果 grep 命令只能找到一行,那么你那条命令跟下面这条结果是相同的:

代码: 全选

sed "/12/d" file
如果文件中有多行包含字符串 12,则上面这条简单的 sed 命令可以成功删除多行,而带 grep 那条命令会出错。
不要一看题目中有“查找”,就想着用 grep。
回复