Posted by mazet on 22 Mar 2020 in Awk
Shell
#!/usr/bin/awk -f | |
| |
BEGIN { | |
FS = "_" | |
} | |
| |
/* defined unit */ | |
function is_unit(s, i) { | |
| |
split("m km s ms us ns dB dBm Hz kHz MHz deg ppm par", list, " ") | |
for (i in list) | |
if ((s == list[i]) || (s ~ "^"list[i]"[^a-zA-Z0-9]")) | |
return 1 | |
| |
return 0 | |
} | |
| |
/* Change to camelCase */ | |
{ | |
line = $1 | |
| |
for (i = 2; i <= NF; i++) { | |
| |
letter = substr($(i), 1, 1) | |
| |
/* check if field is a unit or a constant */ | |
if (is_unit($(i)) || (letter == toupper(letter))) { | |
line = line "_" $(i) | |
} else { | |
/* upper case first letter */ | |
sub(letter, toupper(letter), $(i)) | |
line = line $(i) | |
} | |
} | |
| |
print line | |
} |