使用旧字符串

时间:2017-05-01 19:50:58

标签: bash sed

让我准确说明我想要做的事情。我制作的脚本生成了绘制图像的XDoTool命令。这是向右移动鼠标的典型命令:xdotool mousemove_relative --sync --polar 90 2。这里的问题是,如果鼠标需要一次移动超过2个像素,它只需运行上述命令就可以移动该距离,从而大大增加了绘制图像所需的时间。而不是更改命令中的距离参数(默认情况下设置为2)。为了解决这个问题,我希望它能够在包含命令的行的一行中查找多次出现,并且仅使用命令的单个实例查找命令,但是在行的实例数量中上面的命令,两次,设置为距离参数。

请记住,以上命令的连续实例只有在它们是该行的唯一内容时才会被替换。例如:

xdotool mousemove_relative --sync --polar 90 2
xdotool mousemove_relative --sync --polar 90 2

将替换为:

xdotool mousemove_relative --sync --polar 90 4

但以下内容:

xdotool click 1; xdotool mousemove_relative --sync --polar 90 2

不会被替换,因为除了命令之外,行中还有其他内容。

1 个答案:

答案 0 :(得分:0)

您可以使用:

perl -0777 -pe 's/(xdotool m.*) 2\s+\1 2/\1 4/g;' old.txt  > new.txt

enter image description here

Regex Demo