c 쉘을 사용하여 csv 파일의 각 행에 있는 uA/mA를 uA로 변환하는 방법은 무엇입니까?

c 쉘을 사용하여 csv 파일의 각 행에 있는 uA/mA를 uA로 변환하는 방법은 무엇입니까?

아래와 같이 *.csv 파일이 있습니다. 제가 하고 싶은 것은 모든 단위를 하나의 단위(uA)로 변환하는 것입니다. 누구든지 C 쉘에서 이 작업을 수행하는 데 도움을 줄 수 있습니까?

여기에 이미지 설명을 입력하세요.

답변1

여기 내 코드가 있는데 지금은 잘 작동하고 있습니다.

# Add a space between result and unit
sed -e 's/mA/ mA/g' -e 's/uA/ uA/g' myfile.csv

#Convert
    awk -F" " '{\
    if ($4 == "mA"){\
        $3*=1000;\
        $4 = "uA";}\
    else\
        $3=$3;\
    }1' OFS=" " myfile.csv >> new_myfile.csv

답변2

이것이 csh에서 수행할 가치가 있는지 잘 모르겠지만 여기에 형편없는 "bash" 솔루션이 있습니다.

cat foo.csv | while IFS='' read -r line; do
    multiplicand="$(
        echo "$line" | 
        perl -pe 's/^.*?([\.0-9]+)mA$/\1/g'
    )"
    echo "$line" | \
    perl -pe 's/^(.*?)'"$(
        echo "$multiplicand" | 
        perl -pe 's/\./\\./g'
    )"'mA$/${1}'"$(
        bc -l <<< "$multiplicand"*1000 2>/dev/null | 
        perl -pe 's/\.0+//g'
    )"'uA/g'
done

관련 정보