加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 使用awk或sed根据无关列创建新行

发布时间:2020-12-15 22:15:12 所属栏目:安全 来源:网络整理
导读:我有一个看起来像这样的文件(列由制表符分隔): Owner Phone CarDan 111-111-1111 Avalon CamryStacy 222-222-2222 Corolla Yaris CamryHenry 333-333-3333 Prius 我希望所有额外的汽车都在自己的原始线以下(每个额外的车都复制了车主和手机信息)所以它看起
我有一个看起来像这样的文件(列由制表符分隔):

Owner    Phone    Car
Dan    111-111-1111    Avalon    Camry
Stacy    222-222-2222    Corolla    Yaris    Camry
Henry    333-333-3333    Prius

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

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

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

解决方法

使用awk,您可以循环遍历从3到结束的字段,并将其与字段1和2一起打印:

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

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

awk '{for(i=3;i<=NF;i++){print $1,$i}}' file | column -t

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读