分页: 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
`grep "12" file`


:em20 :em20 :em20


你确信你这是使用sed?

:em04

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
eexpress 写了:`grep "12" file`


:em20 :em20 :em20


你确信你这是使用sed?

:em04
这个反引号不是可以的吗?? :em09

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 命令只能找到一行,那么你那条命令跟下面这条结果是相同的:

代码: 全选

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