AWK-如何添加句号?

AWK-如何添加句号?,awk,gawk,Awk,Gawk,我有一个文件: fakdfal 14867 kgjafdfrf 8423685 我想得到结果: fakd.fal 14.867 kgjafd.frf 8423.685 使用sed更简单: sed -i.bak 's/...$/.&/' file 或awk解决方案: awk 'length($0)> 3 {l=length($0); $0=substr($0, 1, l-3) "." substr($0, l-2)} 1' file 使用sed更简单: sed -i.bak

我有一个文件:

fakdfal
14867
kgjafdfrf
8423685
我想得到结果:

fakd.fal
14.867
kgjafd.frf
8423.685

使用sed更简单:

sed -i.bak 's/...$/.&/' file
或awk解决方案:

awk 'length($0)> 3 {l=length($0); $0=substr($0, 1, l-3) "." substr($0, l-2)} 1' file

使用sed更简单:

sed -i.bak 's/...$/.&/' file
或awk解决方案:

awk 'length($0)> 3 {l=length($0); $0=substr($0, 1, l-3) "." substr($0, l-2)} 1' file

使用
awk

awk '{sub(/...$/, ".&"); print}'
使用
sed

sed 's/...$/.&/'

使用
awk

awk '{sub(/...$/, ".&"); print}'
使用
sed

sed 's/...$/.&/'

试试这个:-$awk'/[^.]$/{$(NF+1)=“}.1'FS=OFS=fileUsing
sed
更容易:
sed's/../../../../.&/'
。试试这个:-$awk'/[^.]$/{$(NF+1)=“}.1'FS=OFS=fileUsing
sed
更容易:
sed's/../../../../../.
更简单,而且不需要非可移植的
。我不相信
-I.bak
(输出是指标准输出,这更普遍有用,还是回到原始文件中)。Unix脚本写入标准输出是有原因的;它比覆盖输入文件更灵活(并且当标准输入来自管道时效果更好,等等)。感谢@JonathanLeffler,我还与longish awk一起编辑了。
s/..$/.&/
更简单,不需要不可移植的
-r
选项。我不相信
-I.bak
(输出是指标准输出,这更普遍有用,还是回到原始文件中)。Unix脚本写入标准输出是有原因的;它比覆盖输入文件更灵活(当标准输入来自管道时效果更好,还有…)。谢谢@JonathanLeffler,我还与longish awk一起编辑了。让它更简单:
awk'{sub(/…$/,“&”)}1'
@anubhava:是的,代码更少;不,没有那么清楚。我没有那么疯狂地保存3个字符。让它变得更简单:
awk'{sub(/…$/,“&”)1'
@anubhava:是的,它的代码更少;不,没有那么清楚。我并没有那么疯狂地保存3个字符。