分页: 1 / 2
sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??
发表于 : 2012-03-19 23:02
由 Adam_chen
如题!小弟~初学unix 操作系统!谢指导~~
Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??
发表于 : 2012-03-19 23:05
由 枫叶饭团
sed
Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??
发表于 : 2012-03-19 23:33
由 Adam_chen
枫叶饭团 写了:sed
恩呀!睡了先!明天去图书馆补这方面知识,上课没讲到!多谢提点啦
Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??
发表于 : 2012-03-20 10:22
由 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
Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??
发表于 : 2012-03-20 10:23
由 zhpe78
这种操作方式有点危险,如果你有多行 有这个字符,那同样也会被干掉的......
Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??
发表于 : 2012-03-20 10:33
由 eexpress
Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??
发表于 : 2012-03-20 11:42
由 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
Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??
发表于 : 2012-03-20 12:41
由 Adam_chen
zhpe78 写了:这种操作方式有点危险,如果你有多行 有这个字符,那同样也会被干掉的......
确实有这个问题!不然也想不到更好的办法了!但是我的作业里面的话每一行都是独一无二的!所以可以采用
Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??
发表于 : 2012-03-20 12:42
由 Adam_chen
这个反引号不是可以的吗??

Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??
发表于 : 2012-03-20 12:43
由 Adam_chen
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
恩恩 具体情况看你自己要找的什么内容!其实我作业里就是独一无二的名字变量~
Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??
发表于 : 2012-03-20 21:17
由 aerofox
代码: 全选
sed -i '/'`grep "12" file`'/d' file
不能不说这种用法非常非常另类,一个 grep 夹在里面,没有带来任何好处,倒可能添乱。
Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??
发表于 : 2012-03-20 22:20
由 Adam_chen
aerofox 写了:代码: 全选
sed -i '/'`grep "12" file`'/d' file
不能不说这种用法非常非常另类,一个 grep 夹在里面,没有带来任何好处,倒可能添乱。
唉 实在没想到更好的办法
Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??
发表于 : 2012-03-20 22:57
由 aerofox
7楼不是已经给出了正统的方法了吗?
Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??
发表于 : 2012-03-20 23:38
由 Adam_chen
aerofox 写了:7楼不是已经给出了正统的方法了吗?
七楼?莫非把找到的东西赋值给一个字符串变量?其实题目差不多已知一串字符串!然后在文件中找到该字符串所在的行!貌似也没有啥更好的办法诶
Re: sh下shell编程,搜索到文件里的一行,并且把这行删除!应该怎么实现呢??
发表于 : 2012-03-21 6:25
由 aerofox
夹在 grep 命令两端的那两个 / 干什么用的?这就是查找呀,为什么还要走 grep 绕一圈呢?
如果 grep 命令只能找到一行,那么你那条命令跟下面这条结果是相同的:
如果文件中有多行包含字符串 12,则上面这条简单的 sed 命令可以成功删除多行,而带 grep 那条命令会出错。
不要一看题目中有“查找”,就想着用 grep。