您好,我想获取 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
另外几个选项:
使用
awk
, 并将输出字段分隔符设置为换行符awk '{NF+=0} 1' OFS='\n' file
使用
rs
(reshape)实用程序,将输出列数设置为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
工作。)