![c 쉘을 사용하여 csv 파일의 각 행에 있는 uA/mA를 uA로 변환하는 방법은 무엇입니까?](https://linux55.com/image/98424/c%20%EC%89%98%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20csv%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EA%B0%81%20%ED%96%89%EC%97%90%20%EC%9E%88%EB%8A%94%20uA%2FmA%EB%A5%BC%20uA%EB%A1%9C%20%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
답변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