-1
votes

Extrayez la chaîne entre «$$» caractères - $$ extractibc $$

Je travaille sur script shell et nouveau à celui-ci. Je veux extraire la chaîne entre les caractères double $$ code>, par exemple:

entrée: p> xxx pré>

sortie p>

extractabc


1 commentaires

Votre question a reçu de bonnes réponses. Veuillez mettre une fermeture à votre question en marquant une réponse de votre choix comme accepté.


5 Réponses :


0
votes

Vous pouvez faire xxx

supposer que le fichier contenait entrée: $$ extrayant $$ sortie: extrayant . awk scindre vos données en morceaux en utilisant $ comme délimiteur. Le premier élément sera entrée: , Suivant sera vide, suivant sera extrayant .

Vous pouvez utiliser SED comme pour obtenir la même information. xxx

sed recherche des informations entre $$ s et sorties qui. L'objectif est de taper quelque chose comme celui-ci . * $$ (. *) $$. * . C'est gourmand mais reste juste avec moi.

  • recherche . * - c'est-à-dire zéro de caractère ou plus avant $$
  • alors la chaîne devrait avoir $$
  • Après $$, il y aura un caractère zéro ou plus de fois
  • alors la chaîne devrait avoir un autre $$
  • et d'autres personnages à suivre
  • entre le 2 $$ est (. *) . String trouvée entre $$ S reçoit un espace réservé \ 1
  • SED trouve des informations et les publie

5 commentaires

Merci beaucoup! Cela fonctionne bien sur la ligne de commande, mais lorsque j'utilise à l'intérieur du script, cela ne fonctionne pas.


Vous auriez dû mentionner que dans votre question que vous l'utilisez dans un script. Modifiez votre question et mettez-la à la mise à jour avec le script que vous avez, l'erreur que vous voyez, etc.


Vous ne fonctionne pas, ne donne aucune sortie. PS Line est $$ Extractabc $$$ Non Entrée: $$ Extractabc $$ Sortie: Extractabc


@Jotne Pourquoi ça ne marcherait-il pas? Pour les deux intrants, en fait.


@Jotne je viens d'essayer de mettre $$ Extractabc $$$ dans fichier.txt et utilisé awk -f "$" '{print $ 3}' File.txt . Cela m'a donné les informations correctes extrachabc . Si vous avez un exemple de fichier, allez-y et fournissez un lien. Inclure également la sortie de awk --version .



0
votes

en utilisant grep pcre (si disponible) et sur des environs: xxx


0 commentaires

0
votes
echo '$$extractabc$$' | awk '{gsub(/\$\$/,"")}1'
extractabc

1 commentaires

C'est une bonne idée d'ajouter une explication afin que les utilisateurs puissent utiliser plus facilement votre réponse. La réponse du code uniquement ne servira parfois pas le but des utilisateurs et de sa difficulté à comprendre -Avoir



0
votes

Voici une autre variante:

echo "$$extractabc$$" | awk -F"$$" 'NF==3 {print $2}'


0 commentaires

0
votes

Que diriez-vous de supprimer tous les dollars de l'entrée?

$ echo '$$extractabc$$' | tr -d '$'
extractabc


0 commentaires