我正在使用以下命令组合将值从 XML 文件打印到另一个文件:
grep -Po '<add key="WorkstationID" value="\K[^"]+' web.config.txt | awk '{print "MapOPIWs = \04200000" $0}' >> fipayeps_def.cfg && echo '"' >> fipayeps_def.cfg
但我遇到了这个换行符问题:
cat fipayeps_def.cfg
MapOPIWs = "000001769
"
期望结果应该是:
MapOPIWs = "000001769"
有什么办法可以修复它吗?
删除尾随的换行符:
或者,为了更容易阅读,将输出存储在变量中,这会自动删除尾随的换行符:
另外,使用实际的 XML 解析器:
xpe
并且xpup
可能是合适的替代方案(虽然使用相同的 XPath 语法,但在实现上稍微更现代一些)。我还推荐使用 XMLStarlet 作为此答案的 XML ,因为通常您不想使用正则表达式来执行类似 XML 的语法,但如果您更喜欢使用它们来执行类似的任务,那么 perl 在格式化方面比 grep 做得更好:
您可以利用捕获组,然后使用
$1
等等进行打印。第一种方法:
使用
printf()
而不是print
inawk
,这样就不会以换行符结束。第二种方法:
将结束引文打印在 中,
awk
而不是使用单独的echo
: