需要在unix中格式化两个unl文件

Posted

技术标签:

【中文标题】需要在unix中格式化两个unl文件【英文标题】:Need to format two unl files in unix 【发布时间】:2012-07-11 16:21:38 【问题描述】:

我有两个 unl 文件.. 样本.unl 测试.unl 如果我使用下面的 cat 命令,我的输出格式不正确。


cat sample.unl
echo
cat test.unl

.

store_nbr   country_code    date    
400  CA 2010-06-11 12:00:49

我希望输出正确对齐,如下所示..

store_nbr             country_code               date   
400                   CA                         2010-06-11 12:00:49

请帮帮我.. 谢谢

【问题讨论】:

这两段文字有什么区别? 第一个只有表头,第二个 unl 有表输出数据.. 您应该知道cat 不是文本格式化程序。数据由cat 正确处理,但您没有使用合适的工具来完成您想要完成的任务。 【参考方案1】:

为此编写小python脚本:

$ cat format.py 
#!/usr/bin/python

import sys, re

with open(sys.argv[1], "r") as f:
    for line in f:
        print "%-20s %-20s %-20s" % tuple(re.split('\s+', line.rstrip('\n'), 2))

使用示例:

$ python format.py sample.unl
store_nbr            country_code         date                
400                  CA                   2010-06-11 12:00:49 

【讨论】:

什么意思?你想在没有 python 的情况下这样做吗? @user1509613:Python 是一种脚本语言,可以很方便地做到这一点; Perl 和 Awk 是另外两个。您的卸载文件似乎在字段之间缺少正确的分隔符,这将使生活陷入困境——除非字段之间有制表符。您需要注意使用哪种工具,但使用提供固定宽度输出的命令重新格式化数据的基本技术是正确的。如果您的数据包含换行符或制表符或其他破坏简单“每记录行”方法的内容(包含可变长度数据的 blob;VARCHAR(2000)),那将会很有趣。

以上是关于需要在unix中格式化两个unl文件的主要内容,如果未能解决你的问题,请参考以下文章

Linux—使用doc2unix进行文件格式转换

在 unix 中自动打开和格式化 csv 文件

php日期转时间戳

在Unix中打印/替换ALT代码

dos与unix文件格式之间的转换

APUE Unix/Linux文件系统