【发布时间】:2010-02-16 04:06:29
【问题描述】:
我在目录中,其中的文件由许多行组成,如下所示:
98.684807 :(float)
52.244898 :(float)
46.439909 :(float)
然后一行结束:
[chuck]: cleaning up...
我正在尝试从每个文件中删除:(float)(但留下数字),并删除清理...行。
我可以得到:
sed -ie 's/ :(float)//g' *
工作,但这会创建保留旧文件的文件。删除 -e 标志会导致未终止的替换模式错误。
同样处理:
sed -ie 's/[chuck]: cleaning up...//g' *
想法?
【问题讨论】:
-
“创建保留旧文件的文件”是什么意思?
-
如果我有一个名为 abc.它从文件 abc 中删除行,但创建一个名为 abce 的文件。
-
如果模式每行只出现一次,则不需要
g。 -
我知道我迟到了,但
sed -ie 's/ :(float)//g' *和sed -ie 's/[chuck]: cleaning up...//g' *可能不会像你期望的那样做;(float)周围的(),[float]周围的[],以及cleaning up...中的...都是特殊模式。使用sed -ie 's/ :(float)//g' *,它也可能匹配:float。对于sed -ie 's/[chuck]: cleaning up...//g' *,它不会匹配[chuck]: cleaning up...,但会匹配k: cleaning up123。
标签: sed