如果另一列的条目相等,则Linux打印列条目[关闭]

t9eec4r0  于 2023-03-29  发布在  Linux
关注(0)|答案(2)|浏览(105)

已关闭。此问题需要超过focused。当前不接受答案。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

6天前关闭。
Improve this question
使用linux命令或bash,当第3列的对应条目是相同的值时,如何将第6列的条目打印为单行。例如,在下面的示例文件中,当第3列的值为1(第1行和第2行)时,打印'4 103',当第3列的值为2(第3行和第4行)时,打印'113 4',等等。
预期输出应为:

4 103 
113 4
103 4 4 103 
203

我尝试过使用awk来选择第3列取特定值时的行(即第3列仅为1时),但当第3列可以取任何整数值时,我无法找到实现这一点的方法。谢谢。

mzmfm0qo

mzmfm0qo1#

对于任何awk

awk '
    BEGIN{last=1}
    $3 == last{printf "%d ", $6;last=$3;next}
    {last=$3; printf "\n%d ", $6}
    END{print ""}
' file
输出
4 103 
113 4 
103 4 4 103 
203
azpvetkf

azpvetkf2#

如果你想要一个更C风格的答案,那么:

awk '{ if($3 != last) {last = $3; printf("\n%d ", $6)}
       else {printf("%d ", $6)}} 
     END {print ""}
    ' file

你不需要初始化last,因为在awk中数字总是从0开始初始化。注意,如果第一行的第三列不是0,那么这将首先打印一个空行,然后是其余的东西。
因此输出将是:

4 103
113 4
103 4 4 103
203

相关问题