UNIX中的列操作

use*_*163 1 unix bash ksh filter

我有两个像这样的领域

Field1:Field2 - 我把它们存储在这样的文件中:

X : 1234
X : 4321
Y : 123
Z : 1234
Z : 4321
Z : 357
Run Code Online (Sandbox Code Playgroud)

我想把它变成这个:

X : 1234
    4321
Y : 123
Z : 1234 
    4321
    357
Run Code Online (Sandbox Code Playgroud)

对于给定的field1,field2将是不同的,即X不能具有1234并且再次具有1234但是两个不同的field1可以具有相同的field2,如X和Z具有1234和4321.

如何使用BASH/KSH过滤输入文件以获取所需的输出文件?

kev*_*kev 5

awk -F' *: *' '{if(x!=$1)x=$1;else $1="   "}1' input.txt
Run Code Online (Sandbox Code Playgroud)

输出:

X : 1234
    4321
Y : 123
Z : 1234
    4321
    357
Run Code Online (Sandbox Code Playgroud)