0

次のような単一の列にすべてのエントリを含むファイルがあります。

0
SYSCATSPACE
16384
13432
2948
1
1
TEMPSPACE1
1
1
applicable
1
2
USERSPACE1
4096
1888
2176
1

しかし、私はこれを表形式に変換したいと思い3*6ます:

0 SYSCATSPACE 16384 13432 2948       1
1 TEMPSPACE1  1     1     applicable 1
2 USERSPACE1  4096  1888  2176       1

誰か助けてくれませんか。

4

4 に答える 4

1

sedの使用:

sed -n 'N;N;N;N;N;s/\n/ /gp' input

これは6行を読み取り、改行をスペースに置き換え、1行として出力します。また、列を揃えたい場合は、次のコマンドを使用できますcolumn

sed -n 'N;N;N;N;N;s/\n/ /gp' input | column -t
于 2013-03-26T06:04:05.353 に答える
0
perl -lne '$a.="$_ ";if($.%6==0){push(@x,$a);$a=""}END{for(@x){print $_}}' your_file
于 2013-03-26T07:09:08.383 に答える
0

bashメソッド:

while read a; do
    read b; read c; read d; read e; read f;
    echo "$a $b $c $d $e $f"
done

注:これは最適化された方法ではありませんが、もう1つの可能なアプローチです。

于 2013-03-26T07:18:09.980 に答える
0

xargs+printfを使用する別の方法

cat list.txt | xargs -n 6 printf "%10s%20s%10s%10s%10s%10s\n"

または、単にprintf

printf "%10s%20s%10s%10s%10s%10s\n" `cat list.txt`

フィールド長に基づいて、の値を%10s適切な数に変更します。

または単にxargs+echo + column:

cat list.txt | xargs -n 6 echo | column -t
于 2013-03-26T07:26:14.727 に答える