我正在收集命令的一些输出,并希望将2个输出文件合并为一个新文件。
输出样本
output1.txt
OBJECTNAME(TEST.OBJ.1) TYPE(LOCAL)
MESSAGE(20)
OBJECTNAME(TEST.OBJ.2) TYPE(LOCAL)
MESSAGE(30)
...
output2.txt
OBJECTNAME(TEST.OBJ.1) TYPE(MESSAGE)
TIME(16.00.00) DATE(2018-01-11)
OBJECTNAME(TEST.OBJ.2) TYPE(MESSAGE)
TIME(23.44.56) DATE(2019-06-11)
...
我的代码是
MESSAGE=$(echo "DIS MESSAGE(*) MESSAGE")
MESSAGEINFO=$(echo "DIS MESSAGEINFO(*) TIME DATE")
echo "$MESSAGE" >> output1.txt
echo "$MESSAGEINFO" >> output2.txt
我该怎么做才能使其像这样输出到output3.txt:
OBJECTNAME(TEST.OBJ.1) TYPE(LOCAL)
MESSAGE(20)
TIME(16.00.00) DATE(2018-01-11)
OBJECTNAME(TEST.OBJ.2) TYPE(LOCAL)
MESSAGE(30)
TIME(23.44.56) DATE(2019-06-11)
答案 0 :(得分:0)
如果您不介意完全松开“ TYPE(MESSAGE)”和“ TYPE(MESSAGE)”,那么这可能是一个起点:
diff -u2 <(sed 's/TYPE(LOCAL)//' output1.txt) <(sed 's/TYPE(MESSAGE)//' output2.txt) | tr -d '+-' | sed -r '/^\s*$/d'
具有较高输入文件的输出:
OBJECTNAME(TEST.OBJ.1)
MESSAGE(20)
TIME(16.00.00) DATE(20180111)
OBJECTNAME(TEST.OBJ.2)
MESSAGE(30)
TIME(23.44.56) DATE(20190611)
进一步的清理工作可能是从sed's / ^ //'开始删除空间,但是我不想堆叠另一个管道。 当然,可能会有更好看的方式,但这可能就足够了。如果愿意,甚至可以在合并后重新添加TYPE(LOCAL)。
备注:仅当文件内容的结构/顺序与示例中的内容一样浅时,这才起作用...