我有一个 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 开始)移动到第一行中的列。
提前致谢!
保罗
我有一个 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 开始)移动到第一行中的列。
提前致谢!
保罗
$ 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
根据需要调整 awk 记录选择器
paste -d " " <(awk '$3~"x"' tests.txt) <(awk '$3~"y"' tests.txt)