2014-07-07 27 views
1

我在bash脚本中使用此命令,以便将字符串“NOTHING_HERE”替换为“$ EMAIL”(如果它为URL“$ findURL”)。使用变量代替awk中的字符串

问题是我不知道如何告诉awk使用变量$ EMAILS的值而不是使用stirng“$ EMAIL”。

awk -v RS="</Row>" '/'$findURL'/{sub(/NOTHING_HERE/,"$EMAIL")}1' ORS="</Row>" /home/pi/testJMC/JustLinksJMC2.xml | sed '$d' 

任何想法?

谢谢!

编辑:提供样品输入:

<Row ss:AutoFitHeight="0"> 
    <Cell ss:StyleID="s65" ss:HRef="http://www.mapeo-rse.info/promotor/fundaci%C3%B3n-ecolog%C3%AD-y-desarrollo-ecodes"><Data 
     ss:Type="String">Fundación Ecología y Desarrollo (ECODES)</Data></Cell> 
    <Cell><Data ss:Type="String">NOTHING_HERE</Data></Cell> 
    </Row> 
    <Row ss:AutoFitHeight="0"> 
    <Cell ss:StyleID="s65" ss:HRef="http://www.mapeo-rse.info/promotor/fundaci%C3%B3n-iberoamericana-para-la-gesti%C3%B3n-de-la-calidad-fundibeq"><Data 
     ss:Type="String">Fundación Iberoamericana para la Gestión de la Calidad (Fundibeq)</Data></Cell> 
    <Cell><Data ss:Type="String">NOTHING_HERE</Data></Cell> 
    </Row> 
    <Row ss:AutoFitHeight="0"> 
    <Cell ss:StyleID="s65" ss:HRef="http://www.mapeo-rse.info/promotor/fundaci%C3%B3n-interamericana-iaf"><Data 
     ss:Type="String">Fundación Interamericana (IAF)</Data></Cell> 
    <Cell><Data ss:Type="String">NOTHING_HERE</Data></Cell> 
    </Row> 
    <Row ss:AutoFitHeight="0"> 
    <Cell ss:StyleID="s65" ss:HRef="http://www.mapeo-rse.info/promotor/fundaci%C3%B3n-nuevo-periodismo-iberoamericano-fnpi"><Data 
     ss:Type="String">Fundación Nuevo Periodismo Iberoamericano (FNPI)</Data></Cell> 
    <Cell><Data ss:Type="String">NOTHING_HERE</Data></Cell> 
    </Row> 
    <Row ss:AutoFitHeight="0"> 
    <Cell ss:StyleID="s65" ss:HRef="http://www.mapeo-rse.info/promotor/fundaci%C3%B3n-para-el-desarrollo-sostenible-fundes"><Data 
     ss:Type="String">Fundación para el Desarrollo Sostenible (FUNDES)</Data></Cell> 
    <Cell><Data ss:Type="String">NOTHING_HERE</Data></Cell> 
    </Row> 
+0

请提供样本输入。 – merlin2011

回答

1

您需要通过shell变量的awk的方式使用-v name=value语法awk的:

awk -v RS="</Row>" -v u="$findURL" -v email="$EMAIL" '$~u{sub(/NOTHING_HERE/, email)}1' ORS="</Row>" /home/pi/testJMC/JustLinksJMC2.xml | sed '$d' 
+1

Awk-some ... +1 :) – zx81

0

你可以做你做的方式相同对于$findURL

awk -v RS="</Row>" '/'$findURL'/{sub(/NOTHING_HERE/,'"$EMAIL"')}1' ORS="</Row>" /home/pi/testJMC/JustLinksJMC2.xml | sed '$d' 

这应该工作,但我不能测试,因为你没有提供输入片段。