0

我有一个 csv 文件,其中包含许多这种类型的列和行。

foo.csv

1 1 x1
1 1 x2
1 1 y1
1 1 y2
. . .

我应该使用什么命令或创建什么脚本才能使它看起来像这样:

foo.csv

1   1   x1   1   1   y1
1   1   x2   1   1   y2
.   .   .     .   .    .

换句话说,将 foo.csv 中的最后一行(从 1 1 y1 开始)移动到第一行中的列。

提前致谢!

保罗

4

2 回答 2

0
$ cat /tmp/1
abc 1
def 2
ghi 3
pqr 4
uvw 5
xyz 6

$ paste <(head -3 /tmp/1) <(tail -3 /tmp/1)
abc 1   pqr 4
def 2   uvw 5
ghi 3   xyz 6

在这里,第一列取三个字符串,第二列取三个字符串。如果不知道要取的弦数,可以先找。

$ n=$(cat -n /tmp/1 | grep pqr | cut -f1)
$ paste <(head -$((n-1)) /tmp/1) <(sed 1,$((n-1))d /tmp/1)
abc 1   pqr 4
def 2   uvw 5
ghi 3   xyz 6
于 2013-11-05T09:35:21.757 回答
0

根据需要调整 awk 记录选择器

paste -d " " <(awk '$3~"x"' tests.txt) <(awk '$3~"y"' tests.txt)
于 2013-11-05T12:37:33.463 回答