我有一个看起来像这样的文件(列由制表符分隔):
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
顺便说一句,如果您希望输出看起来很好地对齐,您可以通过管道传输到 column
命令:
awk '{for(i=3;i<=NF;i++){print $1,$2,$i}}' file | column -t
关于bash - 使用 awk 或 sed 基于无关列创建新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34802428/