以下命令执行什么操作

时间:2015-10-05 20:55:55

标签: regex shell sed

我试着理解以下sed命令会做什么:

sed ‘s/[[:digit:]]+\([[:digit:]]\)/0/g’ myfile

2 个答案:

答案 0 :(得分:1)

尝试在包含12(5)等模式的输入上运行它并查看它的作用。通常,s/pattern/something/g会使用 来搜索并替换 pattern 的每个实例。

答案 1 :(得分:1)

也许这应该是一个评论,但它有点长......

没有任何开关(通常为-r / -E,具体取决于您的sed版本),这将匹配一个数字,后跟加号,后跟另一个数字。它会在加号后捕获数字,但不会在替换中使用它(这对我来说有点奇怪)。

启用扩展正则表达式(使用上面提到的其中一个开关),这将匹配一个或多个数字,后跟括号中的单个数字。

在这两种情况下,任何匹配都将替换为0。

我觉得该命令应该在扩展模式下运行,但我不知道任何版本的sed默认启用它,所以命令看起来可能已经坏了。

我也对命令的引号持怀疑态度,因为它们似乎不是正常的单引号' - 这可能会导致您出现问题......

在任何情况下,如果您提供了输入样本并说明了您要做的事情,而不是仅仅发布一个随机的sed命令作为问题,它将帮助我们帮助您:)