현재 AppleScript의 명령을 사용하여 체중계에서 수신하는 체중 데이터를 자릅니다. 우리는 다음 형식으로 숫자를 나타내는 가중치를 받습니다 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/\.*$//'