Comment puis-je en tirer:
randomcollege-nt\user90
pour ça:
user90
en utilisant sed?
sedvisite: grymoire.com/Unix/Sed.html
Comment puis-je en tirer:
randomcollege-nt\user90
pour ça:
user90
en utilisant sed?
sedvisite: grymoire.com/Unix/Sed.html
Réponses:
J'utiliserais un simple grepà rechercher user90:
$ echo "randomcollege-nt\user90" | grep -o user90
user90
Si user90 n'est pas constant, préférez cette commande:
$ echo "randomcollege-nt\user90" | grep -oP '(?<=randomcollege-nt\\)\w+'
user90
Enfin en utilisant sedpour éditer le fichier en place:
$ sed -ri 's/randomcollege-nt\\(user[0-9]+)/\1/' my_file
Ou pour faire correspondre tous les comptes d'utilisateurs possibles:
$ sed -ri 's/randomcollege-nt\\(\w+)/\1/' my_file
grep -Fla chaîne entière.
Vous analysez du texte pour extraire le nom d'utilisateur d'une domain\usernamechaî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:
sed 's|.*\\\(.*\)|\1|'
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 sedcommande ci-dessus avec n'importe quel nom de domaine, pas nécessairement randomcollege-nt.
$ echo "randomcollege-nt\user90" | sed 's|.*\\\(.*\)|\1|'
user90
$ echo "domain\username" | sed 's|.*\\\(.*\)|\1|'
username
$ echo "anydomainname\roboman1723" | sed 's|.*\\\(.*\)|\1|'
roboman1723
Un autre sed:
$ echo "randomcollege-nt\user90" | LC_ALL=C sed -e 's/.*\\//'
user90
ou POSIX:
$ a='randomcollege-nt\user90'
$ printf '%s\n' "${a##*\\}"
user90
shfonctionnalité POSIX . pubs.opengroup.org/onlinepubs/009604599/utilities/…
Je sais que tu veux utiliser sed, mais j'utiliserais quelque chose de différent ...
echo "randomcollege-nt\user90" | cut -d'\' -f2
Est-ce là la question?
$ echo randomcollege-nt\user90| sed -e s,randomcollege-nt\,,
user90
si la piqûre randomcollege-nt n'est pas contante, utilisez la commande awk ci-dessus / ci-dessous.
/user90ne reçois pasuser90
Vous utilisez plutôt 'awk' pour filtrer "user90":
echo "randomcollege-nt\user90" | awk -F\\ {'print $2'}
Cette simple commande grep fera le travail,
$ echo 'randomcollege-nt\user90' | grep -oP '[^\\]*$'
user90
Avec sedtout supprimer dans une chaîne avant un caractère spécifique (définir entre crochets [Caractère spécifique]).
echo "randomcollege-nt\user90" | sed 's/.*[\]//'
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 -iflag in sedcomme ceci:
sed -i 's/.*[\]//' /path/to/FileName
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:
ORIGIN='randomcollege-nt\user90'
echo "${ORIGIN#*\\}"
Si vous vous attendez à plus d'une barre oblique inverse, doublez les signes de hachage:
echo "${ORIGIN##*\\}"
Pour plus d'informations man bashet recherchez Parameter Expansion.
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 .
man the_command_nameet 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.