現在、AppleScriptのコマンドを使用して、体重計から受信した体重データを切り捨てます。次の形式で数値を表す重みを受け取りますX.XXX. lb.
。X
数字の前のスペース6個、スペース3個、lb
残りのスペース5個を削除します。
次のコマンドを使用して文字を正常に切り捨て、X.XXX..
ファイルメタデータから読み取った重みを取得しました。
| sed 's/[.^0-9]//g'
また、体重データから1000文字以内の小数点2桁を削除しようとしています。どこに行けばいいのか分からない。
編集する:
正確に何が起こっているのかをより明確にするために、MacOSで画像ファイルを作成するプログラムを使用しています。私が作業しているスクリプトの部分は、exiftool
メタデータをイメージファイルに書き込む前に、この重みデータをトリミングすることです。さまざまなテキスト状態の私の例では、上記X
のsはすべて常に異なる可能性がある数値ですが、小数点以下の数千桁を超えていません。したがって、最初の小数点の後と最初の小数点の前に3桁以上の数字を取得することはできません。この場合、最大2桁まで受け取ることができXX.XXX
、欠けている数字なしで余分な文字をカットする必要があります。これが問題をよりよく理解するのに役立つことを願っています。
パッケージの重量を測定すると、天びんは次のようにプログラムにデータを送信します。
1.392. lbs.
1.392..
ファイルのメタデータを作成する前に、スクリプトがこのコンテンツをトリミングするようにしました。小数点の最後の2桁も削除し、重量測定値が2桁の場合でも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
次に、各画像のメタデータから重みを次の形式で読み込みます。
私たちの目標は、小数点の最後の2桁を削除することです。これが既存のsedコマンドに基づいて構築できるかどうか疑問に思います。
答え1
完全な入力についての議論を無視します。sed 's/[^0-9.]//g'
末尾の点だけが効果がある場合は、単に末尾の点を削除することをお勧めします。
sed 's/[^0-9.]//g;s/\.*$//'