使用awk或sed创建基于无关列的新行

Ric*_*ick 4 bash awk sed

我有一个看起来像这样的文件(列由制表符分隔):

Owner    Phone    Car
Dan    111-111-1111    Avalon    Camry
Stacy    222-222-2222    Corolla    Yaris    Camry
Henry    333-333-3333    Prius
Run Code Online (Sandbox Code Playgroud)

我希望所有额外的汽车都在自己的原始线以下(每个额外的车都复制了车主和手机信息)所以它看起来像这样:

Owner    Phone    Car
Dan    111-111-1111    Avalon
Dan    111-111-1111    Camry
Stacy    222-222-2222    Corolla        
Stacy    222-222-2222    Yaris
Stacy    222-222-2222    Camry
Henry    333-333-3333    Prius
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法使用awk或sed(最好是一个内衬)实现这一点.

hek*_*mgl 8

随着awk你可以循环遍历字段3结束并打印它们与字段12:

awk '{for(i=3;i<=NF;i++){print $1,$2,$i}}' file
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果你希望输出看起来很好地对齐,你可以管道到column命令:

awk '{for(i=3;i<=NF;i++){print $1,$2,$i}}' file | column -t
Run Code Online (Sandbox Code Playgroud)