我正在try 使用sed的regexp.我已经用kiki测试了我的正则表达式,kiki是一个测试regexpd的gnome应用程序,它在kiki中工作.

date: 2010-10-29 14:46:33 -0200;  author: 00000000000;  state: Exp;  lines: +5 -2;  commitid: bvEcb00aPyqal6Uu;

我想用零来代替author: 00000000000;.所以,我创建了regexp,当我在kiki中测试它时,它可以工作:

author:\s[0-9]{11};

但当我在sed分钟内测试它时,它不起作用.

sed -i "s/author:\s[0-9]{11};//g" /tmp/test_regex.txt

我知道regex有不同的实现,这可能就是问题所在.我的问题是:我至少应该如何try "调试"sed发生了什么?为什么不起作用?

推荐答案

我版本的sed不喜欢{11}位.正在使用以下命令处理该行:

sed 's/author: [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9];//g'

很好.

我调试它的方式正是我在这里所做的.我刚刚建立了一个命令:

echo 'X author: 00000000000; X' | sed ...

一次删除一个更高级的正则表达式:

  • 使用了<space>而不是\s,但没有修复.
  • [0-9]的11份副本替换了[0-9]{11}份,效果不错.

这几乎是had,因为我已经成功地使用了你的正则表达式的所有其他功能.

但是,事实上,如果没有可怕的11份[0-9],这个will实际上是有效的,你只需要逃离大括号[0-9]\{11\}.我必须承认,我没有试过,因为它对倍数很管用,而且我通常不太在意sed中的简洁性,因为我更倾向于把它用于快速、肮脏的工作:-)

但是支撑法要简洁得多,适应性强得多,知道怎么做很好.

Linux相关问答推荐

如何检测文件系统是否支持权限?

如何判断程序是在终端上运行还是在后台运行?

Docker运行错误:exec/app/backend/server:没有这样的文件或目录

ShellScript,有更好的方法来查找具有特定名称和日期的文件吗?

在 bash 脚本中保持两个进程处于活动状态(并在死亡时重生它们)

RabbitMQ 安装后没有自动启动

为什么我的 Docker 进程不断在我的 Raspberry Pi 上重新启动?

如何为命令的所有选项启用无密码 sudo?

Linux time 命令输出中 real、user 和 sys 的含义

如何下载较旧的 google play 服务?

为什么可执行文件操作系统依赖于?

scp 使用私钥身份验证将目录复制到另一台服务器

谁决定任何数据类型或 struct 的大小(取决于 32 位或 64 位)?

如何使用 Ansible 等待服务器重启?

如何更改 tmux 会话的起始目录?

如何从目录复制内容而不是符号链接?

PostgreSQL psql 终端命令

如何将所有文件从一个目录移动(和覆盖)到另一个目录?

`os.symlink` 与 `ln -s`

使用 WGET 运行 cronjob PHP