gpt4 book ai didi

linux - 使用 shell 脚本将逗号分隔的单元格分隔到新行

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:51 26 4
gpt4 key购买 nike

我有一个包含逗号分隔列的表,我想将指定列中的逗号分隔值分隔到新行中。例如,给定的表是

Name    Start   Name2

A 1,2 X,a

B 5 Y,b

C 6,7,8 Z,c

我需要将第 2 列中的逗号分隔值分隔开才能得到下表

Name    Start   Name2

A 1 X,a

A 2 X,a

B 5 Y,b

C 6 Z,c

C 7 Z,c

C 8 Z,c

我想知道是否有任何 shell 脚本的解决方案,以便我可以创建一个工作流管道。

注意:原始表格可能包含超过 3 列。

最佳答案

假设您的输入和输出格式没有改变:

awk 'BEGIN{FS="[ ,]"} {print $1, $2, $NF; print $1, $3, $NF}' input_file

输入:

输入文件:

A 1,2 X    
B 5,6 Y

输出:

A 1 X
A 2 X
B 5 Y
B 6 Y

解释:

  • awk:调用awk,一个操作行(记录)和字段的工具
  • '...':用单引号括起来的内容作为指令提供给 awk
  • 'BEGIN{FS="[ ,]"}:在读取任何行之前,告诉 awk 使用空格和逗号作为分隔符; FS 代表字段分隔符。
  • {打印 $1, $2, $NF; print $1, $3, $NF}:对于读取的每个输入行,在一行上打印第一个、第二个和最后一个字段,然后在下一行打印第一个、第三个和最后一个字段。 NF 代表字段数,所以 $NF 是最后一个字段。
  • input_file:将输入文件的名称作为参数提供给 awk。

响应更新的输入格式:

awk 'BEGIN{FS="[ ,]"} {print $1, $2, $4","$5; print $1, $3, $4","$5}' input_file

关于linux - 使用 shell 脚本将逗号分隔的单元格分隔到新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13707595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com