sed コマンドを使用して、不要なスペース、文字、小数点をトリミングします。

sed コマンドを使用して、不要なスペース、文字、小数点をトリミングします。

現在、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/\.*$//'

関連情報