我试图找出如何让sed
递归替换通配符字符串。
我需要改变
style="position:absolute;top:522;left:118">
到
style="position:absolute;top:522px;left:118px">
这些数字必须是通配符,因为它们会不断变化。此外,如果有px
,则无需执行任何操作。
答案 0 :(得分:0)
您可以使用此sed
,
sed 's/\(:[0-9]\+\)\(px\)\?/\1px/g' yourfile
如果您的sed
支持-E
选项,
sed -E 's/(:[0-9]+)(px)?/\1px/g' yourfile
<强>测试强>
$ cat file
style="position:absolute;top:522;left:118;right:28px">
$ sed 's/\(:[0-9]\+\)\(px\)\?/\1px/g' file
style="position:absolute;top:522px;left:118px;right:28px">
答案 1 :(得分:0)
你可以拥有
sed -r 's|(style="position:absolute;top:[0-9]+)(px)?(;left:[0-9]+)(px)?(">)|\1px\3px\5|g' file
或者可能稍微不那么具体:
sed -r -e 's@((top|left):[0-9]+)(px)?@\1px@g' file
添加-i
以就地编辑文件。
答案 2 :(得分:0)
您可以使用此awk
:
awk '/style/ && !/px">/ {sub(/">/,"px&")}1' file
如果该行确实包含style
,但缺少px
,请将其添加。