gpt4 book ai didi

linux - 使用 awk at 模式拆分文件

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

这是我在 example.tsv 中的一行数据的示例:

somedata1:data1#||#somedata2:data2#||#somedata1:data3#||#somedata2:data4

我想做两件事:

  1. 从模式'#||#' 中拆分数据并将其写入其他文件。拆分后的列数不固定。我试过 awk 命令:

    awk -F"#\|\|#"'{print;}' example.tsv > splitted.tsv

    第一个文件的输出应该是:

    第 1 列
    一些数据 1:数据 1
    一些数据2:数据2
    一些数据 1:数据 3
    somedata2:data4

  2. 接下来我想根据 ':' 拆分 splitted.tsv 中的数据。

    一些数据1
    数据1
    数据3
    并将其写入文件。有没有一种方法可以在单个 awk 命令中完成此操作?

最佳答案

您需要正确转义|。然后使用split

awk -F'#\\|\\|#' '{split($2,a,":");print a[2]}' file
data2

打印表格中的所有数据:

awk -F'#\\|\\|#' '{for (i=1;i<=NF;i++) print $i}' file
somedata:data1
somedata:data2
somedata:data3
somedata:data1

进一步拆分数据:

awk -F'#\\|\\|#' '{for (i=1;i<=NF;i++) {split($i,a,":");print a[1],a[2]}}' file
somedata data1
somedata data2
somedata data3
somedata data1

关于linux - 使用 awk at 模式拆分文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30051371/

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