如何替换文件中以某个前缀开头的所有字符串

罗伊

例子:

1:20 2:25 3:0.432 2:-17 10:12

我想替换所有to开头的字符串2:2:0

输出:

1:20 2:0 3:0.432 2:0 10:12
科斯

使用sed

sed -E 's/((^| )2:)[^ ]*/\10/g' in > out

此外,作为灵感souravc的回答,如果不是一的机会,2:子字符串开始后含有导致2:子串(例如有没有一个的机会1:202:25串,下列哪缩短命令将取代于1:202:0)时,命令可能会缩短为:

sed -E 's/2:[^ ]*/2:0/g' in > out

命令 #1 / #2 细分

  • -E:sed将模式解释为 ERE(扩展正则表达式)模式;
  • > out: 重定向stdoutout;

sed命令 #1 故障

  • s: 断言执行替换
  • /: 开始模式
  • (: 启动捕获组
  • (: 开始对允许的字符串进行分组
  • ^: 匹配行的开头
  • |: 分隔第二个允许的字符串
  • : 匹配一个字符
  • ): 停止对允许的字符串进行分组
  • 2: 匹配一个2字符
  • :: 匹配一个:字符
  • ): 停止捕获组
  • [^ ]*: 匹配任意数量的字符,不匹配
  • /: 停止模式/开始替换字符串
  • \1: 反向引用替换为第一个捕获组
  • 0: 添加一个0字符
  • /: 停止替换字符串/启动模式标志
  • g: 断言全局执行替换,即替换行中模式的每次出现

sed命令#2 分解

  • s: 断言执行替换
  • /: 开始模式
  • 2: 匹配一个2字符
  • :: 匹配一个:字符
  • [^ ]*: 匹配任意数量的字符,不匹配
  • /: 停止模式/开始替换字符串
  • 2:0: 添加一个2:0字符串
  • /: 停止替换字符串/启动模式标志
  • g: 断言全局执行替换,即替换行中模式的每次出现

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

替换所有以某些前缀开头的字符串

如何替换文件夹中Word文档中所有出现的字符串

替换文件中的所有字符串,在替换中使用通配符

替换文件夹中所有文件中的字符串

用powershell替换文件夹中所有文件中的字符串

Powershell替换文件夹中所有文件中的字符串

使用Ant,替换文件中的所有_,但仅替换特定字符串中的所有_吗?

替换文件中的字符串将覆盖所有内容

在 Groovy 中如何替换文件中的字符串?

删除节点js中某个目录下所有名称以某个字符串开头的文件

如何使用gulp替换文件中的字符串?

如何搜索和替换文件中的字符串

如何替换文件中的字符串?

如何替换文件中的字符串?

如何替换文件中的字符串

如何替换文件中的可变字符串?

替换文件中的字符串

替换文件中的字符串

如何替换字符串中某个特定字符的所有出现?

如何重命名文件夹中所有不以特定前缀字符串开头的文件?

如何用前缀字符串替换数组中的所有元素?

如何用PHP中的模式替换所有出现的字符串开头和结尾

查找文件中以 ___ 开头的所有字符串

如何搜索字符串并替换文本文件中的字符串?

Bash脚本替换文件中所有出现的字符串,包括文件名

在所有字符串之间替换文本

Sed - 替换文件倒数第二行中所有出现的字符串

仅当行不是以某个特定字符开头时,powershell才替换文件中的行

根据映射文件替换文件中的字符串