• awk错误:无法在awk中将两列合并为一列


    问题描述:

        我有一个 csv 格式name,id,logindate,其中 logindates 显示为"July 15, YYYY HH:mm:ss"ie abc,123,"July 15, YYYY HH:mm:ss"。请注意,前 5 行中应跳过标题和其他信息。因此,示例 csv 文件可能如下所示:

    1. AuditReport
    2. asdf
    3. qwerty
    4. asdf
    5. name, id, logindate
    6. experiment,182002, "July 31, 2022 20:00:00"
    7. unit 1998,183065, "July 3, 2022 21:00:00"
    8. asdf, 202065, "May 25, 2022 20:00:00"

        对于我的输出,我想获得以下内容(标题已删除):

    experiment,182002, "July 31 2022 20:00:00"  unit 1998,183065, "July 3 2022 21:00:00" asdf, 202065, "May 25 2022 20:00:00"

        我的主要任务是即使在字符串中包含逗号也能够正确解析逗号

        经过大量谷歌搜索和几个 SO 问题后,我得出结论,使用 csv 解析器、其他语言,甚至 GNU awk(使用 FPAT)是一个更好的工具,但我被告知生产服务器在我父亲工作的公司使用 awk,并且被认为不是 gawk。(我正在做一些随机的小任务,为自己找工作做准备)

        我试图通过删除“”并通过 FS="," 解析来解决此问题,然后再次将最后两列连接在一起。但是,我的输出一直给我 4 列(无法将最后两列连接成一列)

    我的代码是:

    /usr/bin/env awk {BEGIN{FS=","} NR>5 {print}' sample.csv | awk '{ gsub("\"", "") } { $1=$1 } 1' | awk '{ print $1, $2, $3" "$4 }' > test.csv

    解决思路一:

        一旦通过设置检测到标题行,您就不必担心逗号解析

    • FS = "^$

    1. echo "${_input_data_}" |
    2. mawk '_+=(!__ FS=','
    1. experiment,182002, "July 31, 2022 20:00:00"
    2. unit 1998,183065, "July 3, 2022 21:00:00"
    3. asdf, 202065, "May 25, 2022 20:00:00"

    解决思路二:

        使用您显示的示例,请尝试以下awk代码。用 GNU 编写和测试awk,应该可以在任何 POSIXawk版本中工作。根据 OP 的要求,使用awk'smatch函数在其中使用正则表达式"[a-zA-Z]+ [0-9]{1,2}, [0-9]{4} [0-9]{2}(:[0-9]{2}){2}[^"]*"来获得预期的结果。然后在打印值时使用 substr(获取子字符串)。

    1. awk '
    2. match($0,/"[a-zA-Z]+ [0-9]{1,2}, [0-9]{4} [0-9]{2}(:[0-9]{2}){2}[^"]*"/){
    3. val=substr($0,RSTART+1,RLENGTH-2)
    4. gsub(/,/,"",val)
    5. print substr($0,1,RSTART-1) val substr($0,RSTART+RLENGTH)
    6. }
    7. ' Input_file

    或者,如果您想保留"所需值的前后,则对上述代码稍作更改即可:

    1. awk '
    2. match($0,/"[a-zA-Z]+ [0-9]{1,2}, [0-9]{4} [0-9]{2}(:[0-9]{2}){2}[^"]*"/){
    3. val=substr($0,RSTART,RLENGTH)
    4. gsub(/,/,"",val)
    5. print substr($0,1,RSTART-1) val substr($0,RSTART+RLENGTH)
    6. }
    7. ' Input_file

    解决思路三(这是解决小编问题的思路)

        以上仅为部分解决思路介绍,请查看全部内容,请添加下方公众号后回复001,即可查看。公众号有许多评分最高的编程书籍和其它实用工具,绝对好用,可以放心使用

        如果您觉得有帮助,可以关注公众号——定期发布有用的资讯和资源

  • 相关阅读:
    mysql5.7.35安装配置教程【超级详细安装教程】
    8 ICMP与ping
    BP神经网络应用案例
    神州数码交换机转中文
    差分约束原理及其应用
    PyTorch的安装与一些问题处理
    吉利远景s1
    数据库管理工具:如何使用 Navicat for MySQL 导出导入数据表 Excel 文件?
    WEB核心【请求转发(阶段重点)】第六章
    MySQL百万数据深度分页优化思路分析
  • 原文地址:https://blog.csdn.net/qq_38334677/article/details/126106689