将单行更改为文件中的列

时间:2014-03-30 22:58:55

标签: regex shell sed awk

我有一个包含此格式数据的文件(只有一行)

1 2 3 5 7 9 

我想将此更改为

1
2
3
5
7
9

修改

示例输入有6个数字。但实际数据可能有1000个数字。

我可以将文件复制到excel中并进行转置。但是可以使用awksed

执行此操作

5 个答案:

答案 0 :(得分:4)

kent$ (master|✔) echo "1 2 3 5 7 9"|tr ' ' '\n'
1
2
3
5
7
9

答案 1 :(得分:3)

您可以轻松使用sed

echo 1 2 3 5 7 9 | sed 's/ /\n/g'

或者如果你把它全部放在一个文件中:

sed 's/ /\n/g' < filename

答案 2 :(得分:3)

使用xargs。

echo 1 2 3 5 7 9  |xargs -n1

或者如果你把它全部放在一个文件中:

xargs -n1 < file

答案 3 :(得分:2)

我用

创建了一个包含1M个数字的测试文件
awk 'BEGIN{for(i = 0; i < 1000000; i++) {printf "%d ", i} }' > t.txt

结果:

$ time tr ' ' '\n' <t.txt | tail -n 2
999998
999999
real    0m0.018s
$ time sed 's/ /\n/g' t.txt | tail -n 2
999998
999999
real    0m0.223s
$ time awk '{for (i = 1; i <= NF; i++) print $i}' t.txt | tail -n 2
999998
999999
real    0m0.400s

因此tr是最快的方法。

答案 4 :(得分:1)

...

awk 1 RS='[[:space:]]+' file