如何删除文件中标记为“0”的空格&引用;不删除我的数字中的小数点?(Bash shell)

如何删除文件中标记为“0”的空格&引用;不删除我的数字中的小数点?(Bash shell),bash,shell,sed,Bash,Shell,Sed,我有一个文件如下所示: 18 29 293.434 12 32 9954.343 12 343 . 12 45 9493.545 我想使用sed将第3行中的“.”替换为“0” 如果不替换文件中的每一个小数位,我就想不出如何执行此操作 任何帮助都将不胜感激。如果我理解清楚,如果圆点在末尾,请删除空格并用0替换此圆点: sed '/\.$/{s/ //g;s/\.$/0/}' file # ^ $是一个锚点,它意味着在该行的末尾 如果我理解得很好,如果点在末尾,请删除空格并用0

我有一个文件如下所示:

18 29 293.434
12 32 9954.343 
12 343 .
12 45 9493.545 
我想使用sed将第3行中的“.”替换为“0”

如果不替换文件中的每一个小数位,我就想不出如何执行此操作


任何帮助都将不胜感激。

如果我理解清楚,如果圆点在末尾,请删除空格并用0替换此圆点:

sed '/\.$/{s/ //g;s/\.$/0/}' file
#       ^
$
是一个锚点,它意味着在该行的末尾



如果我理解得很好,如果点在末尾,请删除空格并用0替换此点:

sed '/\.$/{s/ //g;s/\.$/0/}' file
#       ^
$
是一个锚点,它意味着在该行的末尾


使用GNU时:

sed 's/\B\.\B/0/g' file
输出:

18 29 293.434 12 32 9954.343 12 343 0 12 45 9493.545 18 29 293.434 12 32 9954.343 12 343 0 12 45 9493.545
请参阅:

使用GNU时:

sed 's/\B\.\B/0/g' file
输出:

18 29 293.434 12 32 9954.343 12 343 0 12 45 9493.545 18 29 293.434 12 32 9954.343 12 343 0 12 45 9493.545

请参阅:

在每个UNIX框的任何shell中使用任何awk,并假设您希望将
替换为
0
,无论它在任何字段中单独出现,而不仅仅是在第三行输入的最后一个字段中:

awk '{for (i=1; i<=NF; i++) if ($i == ".") $i=0} 1' file

awk'{for(i=1;i在每个UNIX框的任何shell中使用任何awk,并假设您希望将
替换为
0
,无论它在任何字段中单独出现,而不仅仅是在第三行输入的最后一个字段中:

awk '{for (i=1; i<=NF; i++) if ($i == ".") $i=0} 1' file

awk'{for(i=1;我能发布预期的输出吗?标题和描述之间似乎不匹配…你能发布预期的输出吗?标题和描述之间似乎不匹配…对于那些想要符合posix标准的解决方案的人,也许是
sed-E/(^ |[:space:]])[。]([[:space:].$)/\10\2/g'文件
?对于那些想要兼容posix的解决方案的人来说,也许是
sed-E的/(^[space:][space:][])[。]([[space:][]|$)/\10\2/g'文件