使用 sed 命令修剪多余的空格、字符和小数点

使用 sed 命令修剪多余的空格、字符和小数点

目前正在使用 AppleScript 中的命令来修剪我们从体重秤收到的体重数据。我们收到以下格式的权重s 代表数字X.XXX. lb.X我们将删除数字前的 6 个空格以及 3 个空格,lb以及另外 5 个空格。

使用以下命令,我们成功地修剪了字符并获取了X.XXX..在文件元数据中读取的权重:

 | sed 's/[.^0-9]//g'

我们还希望去掉重量数据中第千个字符后面的两位小数。不确定要去哪里。

编辑:

为了帮助更清楚到底发生了什么,我们正在使用一个程序在 MacOS 上写入图像文件。我正在处理的脚本部分是在exiftool为图像文件写入元数据之前修剪此权重数据。在我的文本不同状态的示例中,上面的Xs 都是始终可以变化的数字,但刻度不会超过小数点后千位。因此,在第一个小数点之后,我们永远不会在第一个小数点之前得到超过 3 个数字,在这种情况下,我们可能会收到最多 2 个数字,XX.XXX并且需要修剪多余的字符,同时不丢失数字。希望这有助于更好地理解这个问题

如果我们称量一个包裹,秤将数据发送到我们的程序,如下所示:

     1.392.   lbs.    

1.392..在为文件写入元数据之前,我们已经设法让脚本修剪此内容。希望也删除最后两位小数,同时还要确保在重量读数为两位数的情况下,即11.987我们仍然可以执行相同的修剪。

我正在使用一个程序来捕获图像文件,并使用 AppleScript 从原始相机文件中写入 .jpg。当我们的程序中单击按钮时,就会执行此操作。

我从体重秤接收重量数据,格式如下:

在此输入图像描述

我们脚本的以下部分正在对其进行修剪:

set thePath to "Macintosh HD:Users:Shared:CS:"
        if thePath is equal to thePath then
            -- Format the weight value to remove extra spaces and decimals
            set cleanWeightValue to do shell script "echo " & weightValue & " | sed 's/[^0-9.]//g'"
            
            -- Update Exif metadata with cleanWeightValue
            do shell script "/usr/local/bin/exiftool '-Description=je " & cleanWeightValue & " lbs' " & quoted form of POSIX path of thePath & "front.JPG"
            do shell script "/usr/local/bin/exiftool '-Caption-Abstract=je " & cleanWeightValue & " lbs' " & quoted form of POSIX path of thePath & "front.JPG"
            do shell script "/usr/local/bin/exiftool '-ImageDescription=je " & cleanWeightValue & " lbs' " & quoted form of POSIX path of thePath & "front.JPG"
        end if

接下来,我们的权重在每个图像的元数据中以以下格式读取:

在此输入图像描述

我们的目标是去掉最后两位小数。想知道这是否可以构建我们现有的 sed 命令

答案1

忽略关于整个输入事物的讨论:如果sed 's/[^0-9.]//g'除了尾随点之外对您有用,我建议简单地删除尾随点:

sed 's/[^0-9.]//g;s/\.*$//'

相关内容