J'ai des chaînes sous la forme de wva/sia/e1
, bct/e2
, sv/de/e11
. C'est toujours <Part1>/e<NUM>
ou <Part1>/<Part2>/e<NUM>
. Ce que je veux, c'est raccourcir les chaînes en gardant les premières lettres des parties et en supprimant les barres obliques et les e :
wva/sia/e1 > ws1
bct/e2 > b2
sv/de/e11 > sd11
Comment puis-je faire cela dans un script sh ?
Modifier :la chaîne représente un nom de tâche :
[...]
job_name=$1 # e.g. 'wva/sia/e1'
job_name=cut_name(job_name) # e.g. 'ws1'
[...]
Réponse acceptée :
Sous la forme d'un script comme ce que vous demandez :
#!/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:])
Notez que cela fonctionne pour n'importe quelle longueur, par exemple :
wva/sia/bct/wva/sia/e1
deviendra
wsbws1
tant que la dernière section se termine par /e<num>
À utiliser
- Copiez le script dans un fichier vide, enregistrez-le sous
rearrange.py
-
Exécutez-le avec la chaîne comme argument, par exemple :
python3 /path/to/rearrange.py wva/sia/e1 > ws1
Explication
Le script s'explique à peu près tout seul, mais est également commenté.