Tengo una máquina Linux (Red Hat Linux 5.1), y necesito agregar la siguiente tarea a mi script Bash.
¿Qué comando de Linux o sintaxis de Bash calculará el siguiente carácter ASCII?
Observación - la sintaxis del comando también puede ser AWK/ Perl, pero esta sintaxis debe estar en mi script Bash.
Ejemplo:
input results
a --> the next is b
c --> the next is d
A --> the next is B
Respuestas
4 para la respuesta № 1Perl "s ++
operador También maneja cuerdas, hasta cierto punto:
perl -nle "print ++$_"
los -l
Opción con autochomp es necesaria aquí, ya que an
por ejemplo, de lo contrario volverá 1
.
8 para la respuesta № 2
Usa traductor (tr
)
echo "aA mM yY" | tr "a-yA-Y" "b-zB-Z"
Imprime:
bB nN zZ
3 para la respuesta № 3
Podrías usar chr()
y ord()
funciones para Bash (ver ¿Cómo convierto un carácter ASCII a su valor decimal (o hexadecimal) y viceversa?)
# POSIX
# chr() - converts decimal value to its ASCII character representation
# ord() - converts ASCII character to its decimal value
0 para la respuesta № 4
perl -le "print chr(ord(<>) + 1)"
Interactivo:
breqwas@buttonbox:~$ perl -le "print chr(ord(<>) + 1)"
M
N
No interactivo:
breqwas@buttonbox:~$ echo a | perl -le "print chr(ord(<>) + 1)"
b
0 para la respuesta № 5
El valor del carácter:
c="a"
Para convertir el personaje a su valor ASCII:
v=$(printf %d ""$c")
El valor que desea agregar a este valor ASCII:
add=1
Para cambiar su valor ASCII agregando $ add to it:
((v+=add))
Para convertir el resultado a char:
perl -X -e "printf("The character is %cn", $v);"
solía -X
para desactivar todas las advertencias
Puede combinar todo esto en una línea y poner el resultado en el $ v vatable:
c="a"; add=1; r=$(perl -X -e "printf("%c", $(($add+$(printf %d ""$c"))));")
Puedes imprimir el resultado:
echo "$r"
Puedes hacer una función para devolver el resultado:
achar ()
{
c="$1"; add=$2
printf "$(perl -X -e "printf("%c", $(($add+$(printf %d ""$c"))));")"
}
Puedes usar la función:
x=$(achar "a" 1) // x = the character that follows a by 1
o puedes hacer un bucle:
array=( a k m o )
for l in "${array[@]}"
do
echo "$l" is followed by $(achar "$l" 1)
done