Linux 用另一个单词替换与数字非常接近的单词

Linux 用另一个单词替换与数字非常接近的单词,linux,bash,shell,sed,grep,Linux,Bash,Shell,Sed,Grep,用另一个字符串替换与数字非常接近的字符串 a b c d a b c d e 23:12:00 k b c l d b d c e 12:02:10 如何将时间(数字)前的第一个d替换为另一个字符f a b c d a b c f e 23:12:00 k b c l d b f c e 12:02:10 header ">06:25:50 header ">23:59:38 header ">23:17:50 header ">06:27:3

用另一个字符串替换与数字非常接近的字符串

a b c d a b c d e 23:12:00 k b c l d b d c e 12:02:10
如何将时间(数字)前的第一个d替换为另一个字符f

a b c d a b c f e 23:12:00 k b c l d b f c e 12:02:10
   header ">06:25:50
   header ">23:59:38
   header ">23:17:50
   header ">06:27:37
   header ">06:07:38
或者

如何用标题替换单元格

[srinivas@examplewww ~]$ grep -oP '(cell">)[0-2][0-9]+:[0-9]+:[0-9]+'  test.html1
cell">06:25:50
cell">23:59:38
cell">23:17:50
cell">06:27:37
cell">06:07:38
它应该如下所示

a b c d a b c f e 23:12:00 k b c l d b f c e 12:02:10
   header ">06:25:50
   header ">23:59:38
   header ">23:17:50
   header ">06:27:37
   header ">06:07:38

以下解决方案将搜索任何数字,如果找到,将开始向后轮询以搜索字符串中的
d
,如果找到,则将其替换为
b

样本输入:

echo $x
a b c d a b c d e 23:12:00 k b c l d b d c e 12:02:10
使用awk的解决方案:

echo $x |awk '{for(i=1;i<=NF;i++) if($i ~/[0-9]|-[0-9]/) for(j=i;j>=0;j--) if($j ~/d/) {gsub(/d/,"b",$j);break }}1'
a b c d a b c b e 23:12:00 k b c l d b b c e 12:02:10
echo$x | awk'{for(i=1;i=0;j--)if($j~/d/){gsub(/d/,“b”,$j);break}}1'
a b c d a b c b e 23:12:00 k b c l d b c e 12:02:10
这可能适合您(GNU-sed):


两个regexp模式都匹配,然后在替换的替换端使用反向引用。

还有,规则是什么
sed's/d/f/2'
满足您的要求,但可能不适用于一般情况。由或分隔的两个问题陈述完全不同。两者都不同。如果第一个问题不可能,那么将使用第二个问题陈述=2个单独的问题;/(?谢谢波通,很好用。如果我想换少于24:00:00的线路,我怎么能给你钱limit@SrinivasNallapati请参阅编辑谢谢您的回复。通过此操作,我们无法更改19:00:00。根据您的命令,我们可以更改01,02,03,但不能更改04。请suggest@SrinivasNallapati再见,谢谢。在任何情况下都能很好地工作。如果我想要成龙的话ge低于20:00:00。结果应为b c d a b c d e 23:12:00 k b c l d b c e 12:02:10即使在-ve中,如-39:00:00,也应为change@SrinivasNallapati,现在尝试使用负数。在命令中做了一些小的更改。很好。它工作正常。我正在使用类似于
的if($i~/>[0-1][0-9]:..........-[0-9][0-9]:....)
很高兴,您的问题解决了。