我有一个制表符分隔表,我想更改格式如下所示。
最初文件就像这样
Species Column1 Column2 Column3
A 3
B 1
C 7
D 1
A 8
D 4
B 2
C 5
A 9
我想要的是:
Species Column1 Column2 Column3
A 3 8 9
B 1 2
C 7 5
D 1 4
目前我有这个:
Species Column1 Column2 Column3
A 3
A 8
A 9
B 1
B 2
C 7
C 5
D 1
D 4
我使用sort函数来获取底部表但不确定如何将行组合在一起。谁知道怎么做?
答案 0 :(得分:0)
使用此脚本:
#!/bin/bash
cols=4
nums=$(seq $cols)
files=$(printf "f%s " $nums)
for i in $nums
do
if [ $i = 1 ]; then
tail -n +2 $1 | cut -f"$i" | grep '^.' | cut -d' ' -f1 | sort -u > f"$i"
else
tail -n +2 $1 | cut -f"$i" | grep '^.' | cut -d' ' -f1 > f"$i"
fi
done
head -n1 $1
paste $files
rm -rf $files
输出是:
$ ./script file
Species Column1 Column2 Column3
A 3 8 9
B 1 4
C 7 2
D 1 5
答案 1 :(得分:0)
假设列由制表符分隔且没有标题,则脚本为:
awk -F "\t" '$2' file.txt | sort > col2.txt
awk -F "\t" '$3' file.txt | sort > col3.txt
awk -F "\t" '$4' file.txt | sort > col4.txt
join -a1 -a2 col2.txt col3.txt | join -a1 -a2 - col4.txt