-1
votes

En utilisant sed pour couper le début de stdout

J'écris un petit script pour répertorier tous les répertoires partagés dans un système MACOS. MacOS a un outil simple appelé partage -l qui répertoriera tous les chemins une fois qu'il est combiné avec partage -l | PATH GREP Le problème est que la sortie ressemble à ceci:

chemin: / Volumes / Stockage A / Fichier Server /

Et j'en ai besoin pour ressembler à ceci à la place

/ volumes / stockage \ a / fichier \ serveur /

Pour que les espaces blancs doivent être échappés et le début de la ligne avec le chemin: et l'espace blanc doit être coupé. Je suis en train de jouer avec SED pendant des heures maintenant, mais je ne sais tout simplement pas assez de cela pour le faire tout en une seule commande. J'espère ajouter quelque chose à la fin de partage -l | PATH GREP


0 commentaires

3 Réponses :


0
votes

Vous pouvez utiliser ceci:

sharing -l | sed -En '/^path:/{ s/^path:[[:blank:]]*//; s/[[:blank:]]+/\\&/g; p;}'


3 commentaires

Merci beaucoup, vous avez sauvé de nombreux poils sur ma tête de chair.


Je suis allé par titre de question qui mentionne juste des espaces de décapage au début.


Assez juste, j'ai modifié ma commande sed pour adresser également l'espace d'échappement.



0
votes

Pourriez-vous s'il vous plaît essayer suivi.

sharing -l | awk '{$2=$2"\\";$3=$3"\\";sub(/^path: +/,"")} 1'


1 commentaires

@Jordon Eunson, je pensais avoir besoin de sortie comme / volumes / stockage \ a / fichier \ serveur / que ma commande donne; N'est-ce pas le cas?



0
votes

Si vous n'avez pas besoin des espaces blancs échappés: xxx

et si vous le faites: xxx


0 commentaires