column -t
本質的に、私はLinuxでこのコマンドのエンコーディングに縛られないバージョンを探しています。
区切りファイルをフラットファイルに変換して出力ファイルに書き込む必要があります。正確な区切り文字はさまざまです(、| \ t)。
必ずしもそうではありませんが、フィールドに発音区別記号が付いたテキスト文字が含まれる場合もあります。column -t
UTF-8エンコーディングタイプとのみ互換性があるため、次の「面白い」文字が原因で窒息します。
file -bi
UTF-8で再エンコードできるように、エンコードタイプの決定などのコマンドを試しましたが、「最良の推測」のみを提供します(発音コードが100,000行で始まると失敗します)。
これまで、私は次のことを経験しました。
このスクリプトでは、awk
区切られた列を固定長列に変換しますが、可変列幅が必要です。
$ awk -F@ '{for(i=1;i<=NF;i++){printf "%-20s", $i};printf "\n"}' input.csv
このスクリプトはperl
各列の最大長を見つけ、各列を最大長に設定しますが、可変数の列も必要です。
perl -F'\t' -lane '
BEGIN {
open I, "< inputfile";
for (<I>) {
chomp;
@x = split /\t/;
(length ($x[0]) > $f0) && ($f0 = length ($x[0]) + 1);
(length ($x[1]) > $f1) && ($f1 = length ($x[1]) + 1);
(length ($x[2]) > $f2) && ($f2 = length ($x[2]) + 1);
}
close I;
}
print "$F[0]" . " " x ($f0 - length ($F[0])), "$F[1]" . " " x ($f1 - length ($F[1])), "$F[2]" . " " x ($f2 - length ($F[2]));
' inputfile
誰もが次のスクリプトを持っていますか?
シェルで実行可能
機能
column -t
(さまざまな列幅処理、さまざまな数の熱処理、区切り文字の指定を許可)ANDはエンコードタイプとは無関係ですか?