2012-07-11 38 views
-3

我有兩個unl文件.. sample.unl test.unl 如果我使用下面的cat命令,我的輸出格式不正確。需要在unix中格式化兩個unl文件

{ 
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 

請幫助我..謝謝

+0

這兩段文字有什麼區別? – 2012-07-11 16:31:57

+0

第一個只有表頭,第二個unl有表格輸出數據。 – user1509613 2012-07-11 16:42:02

+0

你應該知道'cat'不是文本格式化程序。數據由'cat'正確處理,但是您沒有使用適當的工具完成您想完成的任務。 – 2012-07-11 22:43:18

回答

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 
+0

unix shell腳本中有沒有選項? – user1509613 2012-07-11 18:59:12

+0

你是什麼意思?你想不用python呢? – 2012-07-11 19:45:29

+0

@ user1509613:Python是一種可以方便地執行此操作的腳本語言; Perl和Awk是另外兩個。您的卸載文件似乎缺少正確的分隔符,這些分隔符會導致生活失敗 - 除非字段之間有標籤。您需要小心使用哪種工具,但使用提供固定寬度輸出的命令重新格式化數據的基本技巧是正確的。如果您的數據包含新行或製表符或其他破壞簡單的「每條記錄」方法(包含非常長度可變數據的Blob; VARCHAR(2000)),那將很有趣。 – 2012-07-11 22:41:48