Comment puis-je en tirer:
randomcollege-nt\user90
pour ça:
user90
en utilisant sed
?
sed
visite: grymoire.com/Unix/Sed.html
Comment puis-je en tirer:
randomcollege-nt\user90
pour ça:
user90
en utilisant sed
?
sed
visite: 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 sed
pour é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 -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:
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 sed
commande 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
sh
fonctionnalité 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.
/user90
ne 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 sed
tout 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 -i
flag in sed
comme 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 bash
et 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_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.