テキスト処理ブロック行から列まで

テキスト処理ブロック行から列まで

Solarisのリストを含むファイルがあります。

List A
hi
hello
hw r u

List B
Hi
Yes

List C
Hello

リストを次のように置き換える必要があります。

List A    List B    List C
hi        Hi        Hello
hello     Yes
hw r u

Solarisでこれを行うにはどうすればよいですか?

ベストアンサー1

awk各チャンクを別々のファイルに分割して一緒に入れることができますpaste(以下では、各リストの間に常に空白行があるとします)。

awk '/^$/ {N++;next}{print >"file"N}' infile.txt
paste file*

pasteコマンドをに移動することもできますawk

awk '/^$/ {N++;next}{print >"file"N} END{system("paste file*")}' inile.txt

出力は次のとおりです

List A    List B    List C
hi        Hi        Hello
hello     Yes
hw r u

行の長さを変更すると、次のような美しいインデントが生成されます。

入力ファイル:

list A
hi
hello
hw r u

List B
Hi this is list B
Yes

List C
Hello, this is list C

あなたはできますpaste file* |column -s $'\t' -tn結果が得られます:

list A  List B             List C
hi      Hi this is list B  Hello, this is list C
hello   Yes
hw r u

おすすめ記事