0
votes

Comment supprimer le mot de la chaîne dans le script shell

Je veux supprimer un mot spécifique de la chaîne dans le script shell.

Mon fichier texte contient des données ci-dessous xxx

Je veux supprimer les périphériques et Nexus_5_29_2 (AVD) - 10

NEXUS_5_29_2 (AVD) - 10 n'est pas constant Il peut passer à NEXUS_5_29_1 (AVD) - 10 ou nexus_5_29 (AVD) - 10

la sortie attendue est xxx

Comment puis-je faire ce ? awk est préférable


7 commentaires

Bienvenue dans le débordement de pile. Donc, une page de questions et de réponses pour les programmeurs professionnels et enthousiastes. S'il vous plaît ajouter votre propre code à votre question. Vous devriez montrer au moins la quantité de recherches que vous avez mises en résolution de cette question vous-même.


@Probot: Vous voulez donc supprimer les premiers caractères de chaque ligne?


@Cyrus Je suis nouveau à Shell Script. J'ai paniqué que les données du document HTML à l'aide de HTML2Text. Tout comment je suis cruté avec cela. J'ai essayé avec Awk pour supprimer le nom du périphérique. mais n'a pas réussi à supprimer (AVD) - 10


@ user1934428 Une sortie attendue est mentionnée en question. peut spécifier le nombre car ces données se tournent à partir du rapport HTML


Envisagez de revenir à l'HTML d'origine et à l'aide d'un analyseur HTML pour générer la sortie finale que vous souhaitez au lieu de ce format intermédiaire.


Veuillez regarder: Que dois-je faire quand quelqu'un répond à ma question?


@Probot: Comment pouvez-vous alors visuellement savoir à quel point les colonnes sont grandes? Si tous sont alignés comme dans l'en-tête. Vous pouvez calculer la colonne de l'en-tête.


4 Réponses :


0
votes

Utilisez SED STRY> pour remplacer ou rechercher et supprimer

cat filename.txt | awk '{print  $2 $3 }'


1 commentaires

Awk ne fonctionnera pas, à moins que le séparateur de champ ne soit pas dans l'espace et si vous le spécifiez comme tel. Virgule manque. Aussi uuoc.



0
votes

Ceci pourrait fonctionner pour vous (GNU SED):

sed -E '/^Devices/{N;s/^\S+\s+(.*\n)\w+_[0-9]+_[0-9]+(_[0-9]+)?\([A-Z]{3}\) - [0-9]+\s+/\1/};P;D' file


0 commentaires

0
votes

En supposant que votre fichier a uniquement des espaces et aucun onglets, vous pouvez supprimer les premiers n caractères pour les lignes, à l'exception de l'en-tête.

> awk 'NR>1 {$0=substr($0,26)} 1' file
***** Failed tests *****
Class                Test
Addition             productCalculation


0 commentaires

0
votes

Recherchez la position de la deuxième en-tête en deuxième ligne et de la partie gauche du côté gauche.

$ awk 'NR==2{n=match($0,/ [^ ]/)} {print substr($0,n+1)}' file

***** Failed tests *****
Class                Test
Addition             productCalculation


0 commentaires