datamesh
ファイルの行列を変更するなどのツールがありますが、csv
文字に基づいて行と列を変更したいと思います。だからファイル
abcde
fghij
klmn
opqrs
しなければならない
afko
bglq
chmq
dinr
ej s
3行が短いので、最後の行にスペースを挿入する必要があることに注意してください。
もちろん、これを行うためにCプログラムを書くこともできますが、これを行うツールを見つけたことがありましたが、検索エンジンがそのツールを見つけるのを助けることはできませんでした。
ベストアンサー1
rs
純粋なtranspose()モードでユーティリティを使用してこれを行うことができます-T
。まず、入力の間隔を適切に指定する場合です。
$ sed -e 's/./& /g' -e 's/ $//' file
a b c d e
f g h i j
k l m n
o p q r s
(またはGNU sedがある場合はそれを使用できますsed 's/./ &/2g'
。別のオプションはループを使用することですsed -E ':a; s/([^ ])([^ ])/\1 \2/; ta'
。)
$ sed -e 's/./& /g' -e 's/ $//' file | rs -Tng0
afko
bglp
chmq
dinr
ej s
重要なオプションは次のとおりです。
-T
純粋な転置-n
空のアイテムを埋める-g0
出力マージン幅(列間隔)を0に設定
awk
あるいは、入力分割には、空の入力フィールド区切り記号とデフォルトの出力フィールド区切り記号を使用します。
awk '{$1=$1} 1' FS= file | rs -Tng0