GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Fractionner une chaîne, extraire des caractères et reconstituer ?

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

  1. Copiez le script dans un fichier vide, enregistrez-le sous rearrange.py
  2. 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é.


Ubuntu
  1. Extraire et afficher des données avec awk

  2. Ubuntu - Comment configurer les autorisations pour autoriser Gedit, Apache et un Ide à jouer ensemble ?

  3. Comment se déconnecter puis se reconnecter au centre logiciel Ubuntu?

  4. Ramenez l'espace arrière à Nautilus (3.18+) une fois pour toutes ! ?

  5. Utilisez Holland et Cloud Backup pour sauvegarder les bases de données MySQL

Comment sauvegarder et restaurer des sites dans Plesk

Comment sauvegarder et restaurer des bases de données dans Plesk

Comment utiliser la commande SED pour rechercher et remplacer une chaîne dans des fichiers

Comment convertir un PDF en images PNG et inversement sous Linux

Construire une commande en mettant une chaîne dans un Tty ?

Comment utiliser Sed pour rechercher et remplacer une chaîne dans un fichier