我有一个像这样的文本文件(lines.txt):
ab.qq
1
2
3
cd.qq
3
4
5
ef.qq
7
8
9
我试图将每 4 行移动到 excel/csv 文件中的不同列,基本上是使用此 bash 脚本打印的内容:
#!/bin/bash
split -l 4 lines.txt outsq
paste -d ' ' outsq*
ab.qq cd.qq ef.qq
1 3 7
2 4 8
3 5 9
我希望得到一些帮助,将其写入 excel/csv 文件,并且任何其他产生结果的方式肯定没问题(无需拆分/粘贴)。
答案1
这rs
(r埃s最初来自 BSD 的 .hape 实用程序对于这种事情很有用。
例如:
$ rs -e -t 4 0 < lines.txt
ab.qq cd.qq ef.qq
1 3 7
2 4 8
3 5 9
在哪里
-e
说将每行输入视为一个元素-t
将列转置为行4 0
输出 4 行和所需数量的列
-c
和选项-C
分别设置输入和输出分隔符 - 因此对于 CSV 输出,您可以使用
$ rs -etC, 4 0 < lines.txt
ab.qq,cd.qq,ef.qq,
1,3,7,
2,4,8,
3,5,9,
rs
可从 Ubuntu 存储库以同名包的形式获取universe
。
或者,您可以在 awk 中执行如下操作:
$ awk '
{a[NR%4] = a[NR%4] == "" ? $0 : a[NR%4] "," $0}
END {for(i=1;i<=4;i++) print a[i%4]}
' lines.txt
ab.qq,cd.qq,ef.qq
1,3,7
2,4,8
3,5,9