Comment puis-je en tirer:
randomcollege-nt\user90
pour ça:
user90
en utilisant sed
?
command-line
sed
text-processing
Roboman1723
la source
la source
man the_command_name
et vous obtiendrez un manuel d'instructions utile pour la commande. Vous pouvez également aller sur www.google.com et taper "didacticiel command_name" et vous trouverez de nombreux guides pas à pas.sed
visite: grymoire.com/Unix/Sed.htmlRéponses:
J'utiliserais un simple
grep
à rechercheruser90
:Si user90 n'est pas constant, préférez cette commande:
Enfin en utilisant
sed
pour éditer le fichier en place:Ou pour faire correspondre tous les comptes d'utilisateurs possibles:
la source
grep -F
la chaîne entière.Vous analysez du texte pour extraire le nom d'utilisateur d'une
domain\username
chaîne, très probablement à partir de Windows. La plupart des réponses ci-dessus ne concernent que votre exemple de chaîne spécifique.La meilleure façon de procéder consiste à utiliser l'expression régulière dans sed pour extraire tout ce qui vient après
\
. Voici comment procéder:Cela correspondra à tout (
.*
) jusqu'à une barre oblique inverse (ici, nous y échappons, c'est donc\\
), puis à tout ce qui suit après la barre oblique inverse (.*
), mais en en faisant un groupe de capture (c.-à-d. Entourer les crochets autour, mais nous devons également nous échapper eux, donc\(.*\)
). Maintenant que nous avons tout ce qui vient après\
dans la chaîne en tant que groupe de capture, nous l'imprimons en le référençant avec\1
.Vous pouvez utiliser la
sed
commande ci-dessus avec n'importe quel nom de domaine, pas nécessairementrandomcollege-nt
.la source
Un autre
sed
:ou POSIX:
la source
sh
fonctionnalité POSIX . pubs.opengroup.org/onlinepubs/009604599/utilities/…Je sais que tu veux utiliser sed, mais j'utiliserais quelque chose de différent ...
la source
Est-ce là la question?
si la piqûre randomcollege-nt n'est pas contante, utilisez la commande awk ci-dessus / ci-dessous.
la source
/user90
ne reçois pasuser90
Vous utilisez plutôt 'awk' pour filtrer "user90":
la source
Cette simple commande grep fera le travail,
la source
Avec
sed
tout supprimer dans une chaîne avant un caractère spécifique (définir entre crochets [Caractère spécifique]).Signifie remplacer tous les caractères (
.*[\]
) avant un caractère par un\
caractère d'espacement (//
)Si vous avez un fichier et que vous souhaitez remplacer la commande use
-i
flag insed
comme ceci:la source
La question initiale demandée
sed
, mais je vois que les alternatives sont populaires ici.Si vous utilisez Bash, l'expansion des paramètres est de loin la plus simple:
Si vous vous attendez à plus d'une barre oblique inverse, doublez les signes de hachage:
Pour plus d'informations
man bash
et recherchezParameter Expansion
.la source
Dans le cas où quelqu'un essaie de supprimer
# server_tokens off;
automatiquement un commentaire de nginx pour aider avec les opérations de développement automatique:sudo sed -ri 's/#\s(server_tokens off;)/\1/' /etc/nginx/nginx.conf
.Testé et fonctionne pour nginx / 1.12.1 sur Ubuntu 16.04 LTS. Réponse connexe au verrouillage de NGINX en désactivant les jetons de serveur ici .
la source