Tengo cadenas en forma de wva/sia/e1
, bct/e2
, sv/de/e11
. Siempre es <Part1>/e<NUM>
o <Part1>/<Part2>/e<NUM>
. Lo que quiero es acortar las cadenas manteniendo las primeras letras de las partes y eliminando las barras y e:
wva/sia/e1 > ws1
bct/e2 > b2
sv/de/e11 > sd11
¿Cómo puedo hacer eso dentro de un script sh?
Editar:la cadena representa un nombre de trabajo:
[...]
job_name=$1 # e.g. 'wva/sia/e1'
job_name=cut_name(job_name) # e.g. 'ws1'
[...]
Respuesta aceptada:
En forma de script como lo que pides:
#!/usr/bin/env python3
import sys
# read the input, split by /
st = sys.argv[1].split("/")
# get the first char of all sections *but* the last one
# add the last *from* the first character
print("".join([s[0] for s in st][:-1])+st[-1][1:])
Tenga en cuenta que esto funciona para cualquier longitud, por ejemplo:
wva/sia/bct/wva/sia/e1
se convertirá
wsbws1
siempre que la última sección termine con /e<num>
Para usar
- Copie el script en un archivo vacío, guárdelo como
rearrange.py
-
Ejecútelo con la cadena como argumento, por ejemplo:
python3 /path/to/rearrange.py wva/sia/e1 > ws1
Explicación
El guión prácticamente se explica solo, pero también se comenta.