2011-05-26 33 views
1

我的問題是一樣的 Command line CSV viewer?column -s, -t命令答案几乎是完美的 - 除了似乎處理空CSV領域我希望它不會。例如,給定的輸入命令行CSV觀衆

col1,,col3 
,col2, 

生產:

col1 col3 
col2 

,但我想:

col1  col3 
    col2 

有沒有達到上述與列命令或以另一種方式實現這一目標的選項? (cygwin環境)

回答

2

這是一個從優雅的最遠的東西,它可能是你已經想到了,並正在尋找一個更好的解決方案的東西,但我解決這個煩惱做了一系列SED替代的把一個空白的空的領域。我有這些作爲我的bashrc中的函數...

csvcolumn() { sed -e "s/^$2/ $2/" -e "s/$2$/$2 /" -e "s/$2$2/$2 $2/g" -e "s/$2$2/$2 $2/g" $1 | column -t -s$2 ; } 
csvcomma() { sed -e 's/^,/ ,/' -e 's/,$/, /' -e 's/,,/, ,/g' -e 's/,,/, ,/g' $1 | column -t -s, ; } 

第一個需要兩個參數能夠指定分隔符字符。第二個是同樣的事情,但它只需要一個參數,並假定分隔符是逗號,因爲這是我最常使用的。

csvcolumn input.csv , 

csvcomma input.csv 
+0

是啊你是對的我在想同樣的事情,但嘿它的作品。 – hanlonj 2011-05-27 06:28:41

0

使用cat和sed。

cat filename | sed 's/[~\],/\t/g' 
+0

即不匹配給出的例子('回聲COL1,COL3 |的sed的/ [〜\],/ \噸/ g''仍然輸出'COL1,col3')。 – 2011-05-26 01:21:01

+1

如果內容寬度不同,則使用製表符可能會導致列不能正確排列。 – hanlonj 2011-05-26 01:27:01

1

-n選項存在於debian中。例如爲:

>$ echo -e "col1,,col3\n,col2," | column -n -s, -t 
col1  col3 
     col2