我正在使用具有以下数据结构的文本文件处理数据:
"1111","2222","3333","4444","5555","6666","7777","2017/12/15 16:26:00"
我正在尝试将日期中的“/”更改为“-”。这是我的 awk 命令:
awk -F "," '{gsub("/", "-", $8); print}' my-input.txt
它成功地更改了 /,但意外的结果是将 ',' 逗号替换为 ' ' 空格字符:
"1111" "2222" "3333" "4444" "5555" "6666" "7777" "2017-12-15 16:26:00"
有谁知道为什么会这样?
正如 taliezin 和 pfnuesel 所指出的,在将输入文件分隔符定义为 '' 时,还需要将输出文件分隔符定义为 ',' 以保留它。如果省略了输出文件分隔符并且对现有字段进行了修改,则 awk 将使用默认值,在这种情况下为 ' ' [空格] 字符。
以下是更正后的 awk 命令:
输出保持“,”的预期结果:
既然要求是“把日期中的'/'改成'-'”,就是简单的字符替换,为什么不用sed呢?sed 's///-/g' my-input.txt