使用 sed 替换字符串
Using sed to replace string
我有下面的txt
604024692;-27.34
500570067;-.0835
604013284;0.00006
603839102;-.1121
我希望它是:
604024692;27.34
500570067;0.0835
604013284;0.00006
603839102;0.1121
但是当我运行低于
sed 's/-/[=12=]/'
它给了我
604024692;027.34
500570067;0.0835
604013284;0.00006
603839102;0.1121
我正在使用 AIX 7.1
感谢任何帮助。
这一行可能会有所帮助:
awk -F';' -v OFS=";" '{sub(/^-/,"0",);+=0}7' file
想法是,在替换之后,我们让 awk 处理前导零。
以你的数据为例:
kent$ cat f
604024692;-27.34
500570067;-.0835
kent$ awk -F';' -v OFS=";" '{sub(/^-/,"0",);+=0}7' f
604024692;27.34
500570067;0.0835
您可以试试下面的 sed 命令。
$ sed 's/-//g;s/\(^\|;\)\././g' file
604024692;27.34
500570067;0.0835
s/-//g
,删除所有减号。 s/\(^\|;\)\./.
匹配开头的点或分号旁边的点,并将匹配替换为组索引 1 内的字符加上数字 0
加上一个点。
$ awk 'BEGIN{FS=OFS=";"} {=(<0?-:)}1' file
604024692;27.34
500570067;0.0835
604013284;0.00006
603839102;0.1121
我有下面的txt
604024692;-27.34
500570067;-.0835
604013284;0.00006
603839102;-.1121
我希望它是:
604024692;27.34
500570067;0.0835
604013284;0.00006
603839102;0.1121
但是当我运行低于
sed 's/-/[=12=]/'
它给了我
604024692;027.34
500570067;0.0835
604013284;0.00006
603839102;0.1121
我正在使用 AIX 7.1 感谢任何帮助。
这一行可能会有所帮助:
awk -F';' -v OFS=";" '{sub(/^-/,"0",);+=0}7' file
想法是,在替换之后,我们让 awk 处理前导零。
以你的数据为例:
kent$ cat f
604024692;-27.34
500570067;-.0835
kent$ awk -F';' -v OFS=";" '{sub(/^-/,"0",);+=0}7' f
604024692;27.34
500570067;0.0835
您可以试试下面的 sed 命令。
$ sed 's/-//g;s/\(^\|;\)\././g' file
604024692;27.34
500570067;0.0835
s/-//g
,删除所有减号。 s/\(^\|;\)\./.
匹配开头的点或分号旁边的点,并将匹配替换为组索引 1 内的字符加上数字 0
加上一个点。
$ awk 'BEGIN{FS=OFS=";"} {=(<0?-:)}1' file
604024692;27.34
500570067;0.0835
604013284;0.00006
603839102;0.1121