我有两个卸载文件,例如header.unl
和store.unl
。
header.unl
仅包含表的列名,而store.unl
包含表中的输出信息。
例如:
header.unl --> store_nbr country_code state_code
store.unl --> 100 US 15
现在我想要合并两个文件,所以我的输出应该如下所示:
store_nbr country_code state_code
100 US 15
... .... ....
.... .... ....
此外,我想通过电子邮件发送此邮件。
非常感谢任何想法和帮助。
答案 0 :(得分:2)
问题中有许多未明确的细节。例如,卸载文件中的列是否由空格,制表符或管道(Informix UNLOAD格式默认分隔符)或其他内容分隔?电子邮件是否需要包含对齐的数据?标题和数据之间的空白是否有意?您的数据是否会包含分隔符(因为处理转义分隔符会使重新格式化数据变得非常复杂)。
基本答案是使用cat
:
{
cat header.unl
echo
cat store.unl
} | mailx -s "Stores Data" whoever@example.com
如果不想要空行,则简化为:
cat header.unl store.unl | mailx -s "Stores Data" whoever@example.com
如果您需要格式化数据,使其在以固定宽度字体显示时看起来很清晰,那么您可能需要通过awk
运行它。
接收数据的人是什么?您最好将复合文件格式化为附件而不是内联文本(这是他们从上面的命令中收到的)吗?如果您需要这样做,您可能需要查看Perl电子邮件模块(有很多可供选择)来处理它。
答案 1 :(得分:1)
很难说出问题是什么,除了cat
之外你还需要什么。我假设你想要的是用标签替换空格,但我可能会感到困惑(事实上我更新了这篇文章,因为我的第一个答案完全偏离目标,基于对你的格式错误的问题的错误解释)。
#!/usr/bin/perl
use strict;
use warnings;
while( <>) { s{ }{\t}g; print ; }
您将其称为merge.pl header.unl store.unl
作为一个班轮:
perl -p -e's{ }{\t}g' header.unl store.unl
请注意,这是完全未经测试的,因为我不想因为你付出更多的努力而冒犯你。
我甚至不太确定你的意思“我想通过电子邮件获得这个......”,所以我会把那部分留下来。