2

我有一个奇怪的问题,我没有看到任何解释。我有一个包含以下内容的文件:

<me@mycomp:~> head -n 2 myfile
f800671 1 V80068 0.000 2.262 DUMMY heeft één van hen niet gezegd
f800671 1 V80068 2.262 4.090 DUMMY la*v Belgique*v sera*v latine*v

我想删除所有 *v (外来词)标记,如下所示:

<me@mycomp:~> head -n 2 myfile | sed 's/*v//'
f800671 1 V80068 0.000 2.262 DUMMY heeft één van hen niet gezegd
f800671 1 V80068 2.262 4.090 DUMMY la*v Belgique*v sera*v latine*v

那里没有运气。sed 命令似乎是正确的。这是一个基本命令,所以风险不大,但我还是检查了它:

echo "Belgique*v" | sed 's/*v//'
Belgique

我认为文件有问题,但老实说我无法想象是什么。我检查了编码,它是纯 ISO-8859 文本。

有任何想法吗?

4

1 回答 1

2

转义*并使用该g标志进行全局替换:

sed 's/\*v//g'

编辑:

*表示“前面的零个或多个”。请禁用此特殊含义,您必须将其转义为\*.

g标志替换所有出现。如果您不设置此标志,则只会替换第一个出现的位置。

于 2013-09-18T08:29:34.717 回答