【问题标题】:sed regex not workingsed 正则表达式不起作用
【发布时间】:2015-12-18 04:37:57
【问题描述】:

我正在使用以下命令来消除粗体文本。

sed 's/\-?[0-9]{1,4}\.[0-9]{1,4}//g' countries.txt

countries.txt 包含以下格式的数据:

卡尼略42.5833 1.6667 6

扎营42.5333 1.6333 6

奥尔迪诺 -42.6 -1.55 6

当我使用上面的正则表达式在 Sublime 中运行查找/替换时,所有地理坐标都被消除了。当我使用 sed 执行相同的正则表达式时,它不起作用。

【问题讨论】:

  • sed 需要被告知这是extended GREP,因为它默认为“最简单”。
  • 试试sed 's/-?[0-9]\{1,4\}\.[0-9]\{1,4\}//g' countries.txt
  • @Jongware 我添加了-E 开关,它工作正常。谢谢

标签: regex sed


【解决方案1】:

请参阅 Sed - Bruce Barnett 的介绍和教程中的The -r Extended Regular Expression argument 部分

由于某些字符的含义在正则表达式和扩展表达式之间是不同的,因此您需要一个命令行参数来使 sed 能够使用扩展。
...
Mac OS X 和 FreeBSD 使用 -E 而不是 -r

因此,在 MacOS 或 FreeBSD 上,您可以使用

sed -E 's/\-?[0-9]{1,4}\.[0-9]{1,4}//g' countries.txt

在其他环境中:

sed -r 's/\-?[0-9]{1,4}\.[0-9]{1,4}//g' countries.txt

【讨论】:

    猜你喜欢
    • 2012-12-18
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    相关资源
    最近更新 更多