Gus*_*ler 7 awk text-processing text-formatting
我正在从具有以下数据结构的文本文件中操作数据:
"1111","2222","3333","4444","5555","6666","7777","2017/12/15 16:26:00"
Run Code Online (Sandbox Code Playgroud)
我正在尝试将日期中的“/”更改为“-”。这是我的 awk 命令:
awk -F "," '{gsub("/", "-", $8); print}' my-input.txt
Run Code Online (Sandbox Code Playgroud)
它成功地更改了 /,但意外的后果是将 ',' 逗号替换为 ' ' 空格字符:
"1111" "2222" "3333" "4444" "5555" "6666" "7777" "2017-12-15 16:26:00"
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会这样?
Gus*_*ler 16
正如 taliezin 和 pfnuesel 所指出的,在将输入文件分隔符定义为 ',' 时,还需要将输出文件分隔符定义为 ',' 以保留它。如果省略了输出文件分隔符并对现有字段进行了修改,awk 将使用默认值,在这种情况下是一个 ' ' [空格] 字符。
以下是更正后的 awk 命令:
awk -F "," -v OFS="," '{gsub("/", "-", $8); print}' my-input.txt
Run Code Online (Sandbox Code Playgroud)
输出保持“,”的预期结果:
"1111","2222","3333","4444","5555","6666","7777","2017-12-15 16:26:00"
Run Code Online (Sandbox Code Playgroud)