我有 3 个源文件。
1.txt
- 模板。
<field name="COL1" label="COL2" data-source="COL1" classes="attribute" category="Attribute"/>
2.txt
- COL1 的变量。
IDNName
BusinessUnit
WWB
IncentiveID
3.txt
- COL2 的变量。
IDN Name
Business Unit
WWB
Incentive ID
我需要这样的输出(从2.txt
and中取出第一行并插入到模板中,然后从and3.txt
中取出第二行并插入到模板中,等等...)2.txt
3.txt
<field name="IDNName" label="IDN Name" data-source="IDNName" classes="attribute" category="Attribute"/>
<field name="BusinessUnit" label="Business Unit" data-source="BusinessUnit" classes="attribute" category="Attribute"/>
<field name="WWB" label="COL2" data-source="WWB" classes="attribute" category="Attribute"/>
<field name="IncentiveID" label="Incentive ID" data-source="IncentiveID" classes="attribute" category="Attribute"/>
for
是否可以通过一个条件来做到这一点sed
?我试过了,但我不知道如何将 2 个文件合并为一行。
for i in $(cat 2.txt); do cat 1.txt | sed 's/COL1/'$i'/g'; echo; done
谢谢。
如果您知道 2.txt 或 3.txt 文件中可能不会出现诸如 TAB 之类的“安全”分隔符,那么您可以这样做
或者使用 GNU 并行:
但是,如果您实际上正在使用 XML 数据,那么您可能想要使用适当的 XML 工具 -
xmlstarlet
是一种可能性,但由于我更熟悉这里使用yqjq
的 kislyuk 的选项:命令行 YAML/XML/TOML处理器 - YAML、XML、TOML 文档的 jq 包装器xq