regex - 使用 sed 删除美元符号一侧的空间
问题描述
我想转换
Some text $ latex code $ some more text
到
Some text $latex code$ some more text
以合理的效率使用 sed (或其他东西)。
我尝试使用删除第一个空格
sed -e 's/\$\s*/\$/g'
但这使得$ some
它$some
是不可取的。同样,我可以为第二个 $ 执行此操作,但这也会在前面产生类似的问题。
然后我尝试像这样捕获组:
sed -e 's/\$\s*\(.*\)\s*\$/\$\1\$/g'
这不起作用(可能是因为 (.*) 组包括 \s 和 $?)。它的输出是
Some text $latex code $ some more text
那么我怎样才能有效地做到这一点呢?如果答案也可以容纳跨越两行的 $$,那就太好了。
解决方案
使用GNU sed:
sed 's/\$ \+/$/; s/ \+\$/$/2' file
或与\s
(匹配空格和制表符):
sed 's/\$\s\+/$/; s/\s\+\$/$/2' file
输出:
一些文本 $latex code$ 一些文本
\+
: 表示前面的表达式必须至少匹配一次或多次
$
: 美元符号,这里没有特殊含义
2
:仅替换正则表达式的第二个匹配项
推荐阅读
- android-studio - 骰子滚轮应用,使用 Kotlin 格式化属性 id 调用
- python-3.x - 在 python 中,如何提高非常大的文件目录的 glob 性能?
- c - 如何在c中从字符串中删除字符
- function - Pine 脚本 - 动态变量?(不一定是正确的术语)
- javascript - 添加实例化网格反应纤维threejs
- android - LineChart Android - xAxis 以毫秒为单位
- php - 按自定义字段过滤帖子 - url 正确更新但过滤不起作用
- matlab - 是否可以在没有深度学习工具箱的情况下将 KERAS 模型导入 Matlab?
- docker - Docker 容器无法在 localhost 和同一网段中访问
- flutter - 如何使用 Flutter 从 Amplify Datastore 中的关系中检索数据