2017-06-02 4 views
2

私は私の入力ファイルで、このコラムのコマンドを入力すると、私は次のエラーを取得するバッシュエラー:「コラム:行が長すぎる」私は、ファイル出力を見ると

column -t text.txt > output 
column: line too long 
column: line too long 
column: line too long 
column: line too long 
column: line too long 
column: line too long 

それがいるようですファイルの前半(左から右)は印刷されません。

このエラーを回避する方法はありますか?このエラーがなければ、コマンドが実行する処理を正確に行う方法はありますか?

サンプル入力(リアルタイム入力〜640列)

column1column1 column2column2 column3 column4 
03 2 45 3 
5 6 7 8 

サンプル出力(実出力〜640列)

column1column1 column2column2 column3 column4 
03    2    45  3 
5    6    7  8 
+1

さて - 私は、エラーを再現!それはスタートです! – Jack

+1

OK - あなたはこれを愛するつもりです。私はFedora git repoからソースを取り出しました。 (私はFedora 25を今実行していて、そこでは失敗します。)ソースから 'column'を構築しました。それは**働いています**。私は640列だけではありませんでした。私は** 6400 **列でした。まだ動作します。 – Jack

+0

Mac OS 10.11.6でもこのエラーが発生しています –

答えて

4

あなたはナイーブawkの実装を試みることができる:

awk 'NR==FNR{for(i=1;i<=NF;i++) 
     max[i] = length($i) > max[i] ? length($i) : max[i]; next} 
{ for(i=1;i<=NF;i++) printf "%-"max[i]"s ", $i; printf "\n"}' text.txt text.txt 
0

代わりに、行を配列に分割する方法もあります。 この行が長すぎるとcolumnがいっぱいでそれを印刷しません。

FULLTEXT=$(cat /Users/burroughclarke/Desktop/commaseperatedvalues.csv) 
printf "$FULLTEXT" | column -t -s ',' 

これは、それを正しく印刷します。

readarray -t ARR < <(cat /Users/burroughclarke/Desktop/commaseperatedvalues.csv | tr "\n" "\n") 
printf '%s\n' "${ARR[@]}" | column -t -s ',' 
関連する問題