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

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

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

#16

帖子 Adam_chen » 2012-03-21 8:51

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

代码: 全选

sed "/12/d" file
如果文件中有多行包含字符串 12,则上面这条简单的 sed 命令可以成功删除多行,而带 grep 那条命令会出错。
不要一看题目中有“查找”,就想着用 grep。
:em06
之前我没理解两个斜杠的意思~哈哈!晓得了!thankyou
Learn more!Communicate more!
loveacat
帖子: 2
注册时间: 2012-03-25 20:13

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

#17

帖子 loveacat » 2012-03-25 20:26

Adam_chen 写了:
zhpe78 写了:这种操作方式有点危险,如果你有多行 有这个字符,那同样也会被干掉的......
确实有这个问题!不然也想不到更好的办法了!但是我的作业里面的话每一行都是独一无二的!所以可以采用
sed '1,/pattern/{/pattern/d}' urfile
只删除第一次匹配pattern的行
头像
Methuselar
帖子: 122
注册时间: 2009-06-04 12:06
联系:

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

#18

帖子 Methuselar » 2012-03-26 14:57

eexpress 写了:`grep "12" file`


:em20 :em20 :em20


你确信你这是使用sed?

:em04
e 神不干正事啊! In-place editing是pl一绝, sed 浪费空间,ed浪费内存,阿姨还不出手??
Mea Culpa!
头像
Adam_chen
帖子: 26
注册时间: 2012-03-17 20:35

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

#19

帖子 Adam_chen » 2012-03-26 15:04

loveacat 写了:
Adam_chen 写了:
zhpe78 写了:这种操作方式有点危险,如果你有多行 有这个字符,那同样也会被干掉的......
确实有这个问题!不然也想不到更好的办法了!但是我的作业里面的话每一行都是独一无二的!所以可以采用
sed '1,/pattern/{/pattern/d}' urfile
只删除第一次匹配pattern的行
帅 那如果数字是几就是删第几行了吧?
Learn more!Communicate more!
头像
Adam_chen
帖子: 26
注册时间: 2012-03-17 20:35

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

#20

帖子 Adam_chen » 2012-03-26 15:06

Methuselar 写了:
eexpress 写了:`grep "12" file`


:em20 :em20 :em20


你确信你这是使用sed?

:em04
e 神不干正事啊! In-place editing是pl一绝, sed 浪费空间,ed浪费内存,阿姨还不出手??
神?阿姨??? In—place editing可以实现删除么?
Learn more!Communicate more!
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

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

#21

帖子 aerofox » 2012-03-26 21:28

Adam_chen 写了:
loveacat 写了:
Adam_chen 写了:
zhpe78 写了:这种操作方式有点危险,如果你有多行 有这个字符,那同样也会被干掉的......
确实有这个问题!不然也想不到更好的办法了!但是我的作业里面的话每一行都是独一无二的!所以可以采用
sed '1,/pattern/{/pattern/d}' urfile
只删除第一次匹配pattern的行
帅 那如果数字是几就是删第几行了吧?
学命令不是这么学的。真想学就得找本书看看,或者看看man也行,光靠记别人给的命令是学不好的。
上面这条命令的数字是起始行号,整条命令的意思就是,对于从第1行到第一个包含pattern的行,删除所有包含pattern的行,因为在这个范围内,“所有”也就只能指代一行,所以结果就是删除第一个包含pattern的行。
回复