Bash 4.4环境下同文件指定标签值复制插入各目标区块的实现方法
实现方案
你可以用标准awk工具完成该需求,该方案兼容所有常见Unix/Linux环境,不受bash版本限制:
执行命令
# 输出结果到新文件 awk '/<Idcode>/{idcode=$0; print $0; next} /<DrctDbtTxInf>/{print $0; getline; print " " idcode; print $0; next} 1' 原文件路径 > 新文件路径 # 如需直接修改原文件,执行以下命令 awk '/<Idcode>/{idcode=$0; print $0; next} /<DrctDbtTxInf>/{print $0; getline; print " " idcode; print $0; next} 1' 原文件路径 > tmp && mv tmp 原文件路径
逻辑说明
- 扫描文件时匹配到
<Idcode>开头的行,先将该行内容存入变量idcode,再正常输出该行 - 扫描到
<DrctDbtTxInf>行时,先正常输出该行,读取下一行内容,先输出带2个缩进空格的idcode内容,再输出刚读取的下一行内容 - 其余所有行直接原样输出
- 如果你的
<DrctDbtTxInf>区块内部缩进不是2个空格,可自行调整命令中print " " idcode里的空格数量即可
内容的提问来源于stack exchange,提问作者Maxrock70
相关产品推荐
相关产品推荐

