将行转换为单个扩展列

将行转换为单个扩展列

您好,我想获取 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+'

它每行打印一个或多个 ( +) 非空白字符 ( )的所有序列。\S

答案2

另外几个选项:

  1. 使用awk, 并将输出字段分隔符设置为换行符

    awk '{NF+=0} 1' OFS='\n' file
    
  2. 使用rsreshape)实用程序,将输出列数设置为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 

前两个替换删除每行的前导和尾随空格,以防止虚假的空行。

(您需要 GNU sed 才能\n工作。)

相关内容