行を単一の拡張列に変換

行を単一の拡張列に変換

こんにちは。 row1データを取得して列に入れ、row2でも同じことを行い、列を拡張したいと思います。

前任者:

これ

 1   2   3   4   5
 6   7   8   9  10
11  12  13  14  15
16  17  18  19  20
21

これに関して

1
2
3
4
5
6
7
8
9
10
...

Bashでどうすればいいですか?

ありがとうございます。

答え1

GNUでは、grep次のことができます。

grep -Eo '\S+'

1行に+1つ以上の空白以外の文字()のすべてのシーケンスを印刷します。\S

答え2

いくつかの追加オプション:

  1. を使用awkし、出力フィールド区切り文字を改行文字に設定します。

    awk '{NF+=0} 1' OFS='\n' file
    
  2. 使用rs(アル字型金利Shape) 出力列数を設定するユーティリティ1(0行数は「必要数」を示す)

    rs 0 1 < file
    

答え3

一連のスペースを改行文字に置き換えるのが最も簡単なようです。

trこれを行うことができます(-sコアは次のとおりです)。

$ tr -s ' ' '\n' < file.txt 

最初の行は前にスペースがあるため空白です1

またはGNU sedを使用してください。

sed -E -e 's/^ +//; s/ +$//; s/ +/\n/g' < file.txt 

最初の 2 つの置換項目は、偽の空行を防ぐために、各行の先頭と末尾のスペースを削除します。

(これが機能するにはGNU sedが必要です\n。)

関連情報