将$ a $替换为使用shell脚本的& a

时间:2016-09-15 09:30:57

标签: bash shell

我想使用shell脚本将所有出现的$[a-z|A-Z|0-9]$替换为&[a-z|A-Z|0-9]。例如,$HELLO$应该变为&HELLO

I/P - $HELLO$
o/P - &HELLO

我尝试使用sed替换字符串。

sed -i -e 's/$*$/&/g filename

I/P - $HELLO$
O/P - &HELLO&

但是我无法确保最后一个$被替换为空格而不是&

2 个答案:

答案 0 :(得分:1)

使用分组和反向引用::

    import flash.events.Event;
    import flash.geom.Point;

    var i: Number;
    var size: int = 80;
    var down: Boolean = false;
    var up: Boolean = true;
    var inside: Boolean = true;
    var outside: Boolean = true;
    var circle: Shape = new Shape();

    stage.addEventListener(Event.ENTER_FRAME, loop);
    stage.addEventListener(MouseEvent.MOUSE_UP, mouseup);
    char.addEventListener(MouseEvent.MOUSE_DOWN, mousedown);

    function loop(e: Event) {
if (down == true) {
    // Checks if mouse pointer is on path i.e 'S' alphabet
    if (s.hitTestPoint(stage.mouseX, stage.mouseY, true)) {
        inside = true;
        outside = true;

        var point: Point = maskobj.globalToLocal(new Point(stage.mouseX, stage.mouseY));
        var point2: Point = new Point();

        //Checks if mouse pointer is completely outside of drawn area
        for (i = 0; i < 2 * Math.PI; i += (2 * Math.PI) / 10) {
            point2.x = stage.mouseX + (size / 3) * Math.cos(i);
            point2.y = stage.mouseY + (size / 3) * Math.sin(i);
            if ((maskobj.hitTestPoint(point2.x, point2.y, true))) {
                outside = false;
                break;
            }
        }

        //Checks if mouse pointer is completely inside drawn area
        for (i = 0; i < 2 * Math.PI; i += (2 * Math.PI) / 10) {
            point2.x = stage.mouseX + (size / 3) * Math.cos(i);
            point2.y = stage.mouseY + (size / 3) * Math.sin(i);

            if (!(maskobj.hitTestPoint(point2.x, point2.y, true))) {
                inside = false;
                break;
            }
        }

        //Character will be moved only if mouse position not to far from current position
        if (outside == false) {
            if (inside == false) {
                //Increases drawn area by drawing a circle shape in 'maskobj' MovieClip

                circle.graphics.beginFill(0x0000ff);
                circle.graphics.drawCircle(point.x, point.y, size);
                circle.graphics.endFill();
                maskobj.addChild(circle);

                //Moves character to new position
                char.x = stage.mouseX;
                char.y = stage.mouseY;
            }
        }
    }
}
    }

    function mouseup(e: MouseEvent): void {
up = true;
down = false;
    }

    function mousedown(e: MouseEvent): void {
down = true;
up = false;
    }

答案 1 :(得分:1)

使用awk的解决方案:这使用awk的内置函数sub来搜索和替换$符号,然后sub再次用于替换{{1}到$

&