在bash中将txt文件中的行拆分为excel列

在bash中将txt文件中的行拆分为excel列

我有一个像这样的文本文件(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

rsrs最初来自 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

相关内容