gpt4 book ai didi

linux - 填充 CSV 文件中的空格

转载 作者:行者123 更新时间:2023-12-05 00:44:28 25 4
gpt4 key购买 nike

我有一个 CSV 文件,其中一些列是空的,例如

oski14,safe,0,13,53,4
oski15,Unknow,,,,0
oski16,Unknow,,,,0
oski17,Unknow,,,,0
oski18,unsafe,0.55,,1,2
oski19,unsafe,0.12,4,,56

如何用“空”一词替换所有空列。
我曾尝试使用 awk(这是我正在学习使用的命令)。

我希望有
oski14,safe,0,13,53,4
oski15,Unknow,empty,empty,empty,0
oski16,Unknow,empty,empty,empty,0
oski17,Unknow,empty,empty,empty,0
oski18,unsafe,0.55,empty,1,2
oski19,unsafe,0.12,4,empty,56

我试图只替换第三列,看看我是否在正确的轨道上
    awk -F '[[:space:]]' '$2 && !$3{$3="empty"}1' file

这给我留下了
oski14,safe,0,13,53,4
oski15,Unknow,,,,0
oski16,Unknow,,,,0
oski17,Unknow,,,,0
oski18,unsafe,0.55,,1,2
oski19,unsafe,0.12,4,,56

我也试过
    nawk -F, '{$3="\ "?"empty":$3;print}' OFS="," file

这导致
oski14,safe,empty,13,53,4
oski15,Unknow,empty,,,0
oski16,Unknow,empty,,,0
oski17,Unknow,empty,,,0
oski18,unsafe,empty,,1,2
oski19,unsafe,empty,4,,56

最后我试过了
    awk '{if (!$3) {print $1,$2,"empty"} else {print $1,$2,$3}}' file

这给我留下了
oski14,safe,empty,13,53,4 empty
oski15,Unknow,empty,,,0 empty
oski16,Unknow,empty,,,0 empty
oski17,Unknow,empty,,,0 empty
oski18,unsafe,empty,,1,2 empty
oski19,unsafe,empty,4,,56 empty

最佳答案

使用支持 ERE 的 sed -E参数(例如 GNU sed 或 OSX/BSD sed):

$ sed -E 's/(^|,)(,|$)/\1empty\2/g; s/(^|,)(,|$)/\1empty\2/g' file
oski14,safe,0,13,53,4
oski15,Unknow,empty,empty,empty,0
oski16,Unknow,empty,empty,empty,0
oski17,Unknow,empty,empty,empty,0
oski18,unsafe,0.55,empty,1,2
oski19,unsafe,0.12,4,empty,56

您需要进行两次替换,因为给定连续的逗号,如 ,,,一个正则表达式匹配将用完前 2 , s 所以你会留下 ,empty,, .

以上将把一个完全空的行变成 empty ,让我们知道这是否有问题。

关于linux - 填充 CSV 文件中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60029222/

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