目前正在使用 AppleScript 中的命令来修剪我们从体重秤收到的体重数据。我们收到以下格式的权重s 代表数字X.XXX. lb.
。X
我们将删除数字前的 6 个空格以及 3 个空格,lb
以及另外 5 个空格。
使用以下命令,我们成功地修剪了字符并获取了X.XXX..
在文件元数据中读取的权重:
| sed 's/[.^0-9]//g'
我们还希望去掉重量数据中第千个字符后面的两位小数。不确定要去哪里。
编辑:
为了帮助更清楚到底发生了什么,我们正在使用一个程序在 MacOS 上写入图像文件。我正在处理的脚本部分是在exiftool
为图像文件写入元数据之前修剪此权重数据。在我的文本不同状态的示例中,上面的X
s 都是始终可以变化的数字,但刻度不会超过小数点后千位。因此,在第一个小数点之后,我们永远不会在第一个小数点之前得到超过 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/\.*$//'