I'like打印从行中的所有第二场为一列,如果他们的第一个字段是相同的。第一相同日提交的未定义
的量示例
1 abc
1 def
1 ghi
2 abc
3 abc
3 def
所需的输出
1 abc def ghi
2 abc
3 abc def
答案 0 :(得分:1)
假设您的输入已排序:
$ awk 'p!=$1{ if(NR>1) print r; p=r=$1 } { r=r FS $2 } END{ print r }' file
1 abc def ghi
2 abc
3 abc def
p
(即前一行的第一列);
NR
)大于1;打印r
。p
和r
。FS
上添加一个空格(r
)和第二列的值。r
。答案 1 :(得分:1)
另一个awk
$ cat michael.txt
1 abc
1 def
1 ghi
2 abc
3 abc
3 def
$ awk ' { c=$1; if(p!=c && NR>1 ) { print p,b,a;b="" } if(p==c) { b=b " "a} p=c;a=$2 } END { print p,b,a } ' michael.txt
1 abc def ghi
2 abc
3 abc def
答案 2 :(得分:0)
请尝试以下操作,它还会以Input_file的第一个字段出现的相同形式为您提供输出。
awk '
!a[$1]++{
b[++count]=$1
}
{
c[$1]=(c[$1]?c[$1] OFS $2:$2)
}
END{
for(i=1;i<=count;i++){
print b[i],c[b[i]]
}
}' Input_file