将非常接近的字符串替换为带有另一个字符串的数字
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.it应如下
a b c d a b c f e 23:12:00 k b c l d b f c e 12:02:10
或,
如何用标题替换单元格。
[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
应该如下
header ">06:25:50
header ">23:59:38
header ">23:17:50
header ">06:27:37
header ">06:07:38
答案 0 :(得分:1)
以下解决方案将搜索任何数字,如果找到,它将开始向后轮询以搜索字符串中的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
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed -r 's/d([^d:]*([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])/f\1/g' file
和
sed -r 's/cell(">([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])/ header \1/' file
两个正则表达式模式匹配,然后在替换的替换方使用反向引用。