文字に基づいてテキストファイルを置き換える方法

文字に基づいてテキストファイルを置き換える方法

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

おすすめ記事