我在bash脚本中使用此命令,以便将字符串“NOTHING_HERE”替换为“$ EMAIL”,如果它获取URL“$ findURL”。
问题是我不知道如何告诉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 :(得分:1)
你需要使用-v name=value
语法将shell变量传递给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 :(得分:0)
您可以采用与$findURL
相同的方式:
awk -v RS="</Row>" '/'$findURL'/{sub(/NOTHING_HERE/,'"$EMAIL"')}1' ORS="</Row>" /home/pi/testJMC/JustLinksJMC2.xml | sed '$d'
这应该可行,但我无法测试,因为您没有提供输入代码段。