【问题标题】:Remove quotes in awk command删除 awk 命令中的引号
【发布时间】:2013-10-28 18:49:54
【问题描述】:

我有一个需要使用 awk 处理的文本文件。

"5","1211274723","0","D","2"
"1","1211292921","0","A","2"
"5","1211295793","0","A","2"
"5","1211310146","0","A","2"
"5","1211310310","0","A","2"
"4","1211315271","0","A","2"
"5","1211318203","0","D","2"
"2","1211323658","0","A","2"
"5","1211329224","0","A","2"
"5","1211330064","0","A","2"


# cat testme.csv | awk -F',' '{print "set", $2, $3}'
set "1211274723" "0"
set "1211292921" "0"
set "1211295793" "0"
set "1211310146" "0"
set "1211310310" "0"
set "1211315271" "0"
set "1211318203" "0"
set "1211323658" "0"
set "1211329224" "0"
set "1211330064" "0"

唯一的问题是我不知道如何删除电话号码周围的引号。所以我的最终输出看起来像这样......

set 1211274723 "0"
set 1211292921 "0"
set 1211295793 "0"
set 1211310146 "0"
set 1211310310 "0"
set 1211315271 "0"
set 1211318203 "0"
set 1211323658 "0"
set 1211329224 "0"
set 1211330064 "0"

【问题讨论】:

    标签: regex awk


    【解决方案1】:

    你可以使用 gsub 函数:

    awk -F',' '{gsub(/"/, "", $2); print "set", $2, $3}' testme.csv 
    set 1211274723 "0"
    set 1211292921 "0"
    set 1211295793 "0"
    set 1211310146 "0"
    set 1211310310 "0"
    set 1211315271 "0"
    set 1211318203 "0"
    set 1211323658 "0"
    set 1211329224 "0"
    set 1211330064 "0"
    

    【讨论】:

    • 你知道如何使用awk将csv转换为tsv吗?引号也应该被删除。
    • awk 'BEGIN { FS=","; OFS="\t" } {gsub(/"/, "");$1=$1; print}' ../task2/sample.csv > sample.tsv 成功了,谢谢
    【解决方案2】:

    使用双引号作为字段分隔符;

     awk -F'"' '{print "set", $4, "\""$6"\""}' testme.csv
    

    【讨论】:

    • 纯 KISS 原则对“只见树木不见森林”情况的回答。先生,您对此有所了解:)。
    猜你喜欢
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    相关资源
    最近更新 更多