¿Cómo obtengo esto?
randomcollege-nt\user90
a esto:
user90
utilizando sed
?
command-line
sed
text-processing
Roboman1723
fuente
fuente
man the_command_name
y obtendrá un manual de instrucciones útil para el comando. También puede ir a www.google.com y escribir "tutorial de nombre de comando" y encontrará muchas guías paso a lado.sed
visita: grymoire.com/Unix/Sed.htmlRespuestas:
Yo usaría un simple
grep
para buscaruser90
:Si user90 no es constante, prefiera este comando:
Finalmente usando
sed
para editar el archivo en su lugar:O para hacer coincidir todas las cuentas de usuario posibles:
fuente
grep -F
toda la cadena.Está analizando un texto para extraer el nombre de usuario de una
domain\username
cadena, muy probablemente de Windows. La mayoría de las respuestas anteriores solo abordan su cadena de ejemplo específica.La mejor manera de hacer esto es usar regex en sed para extraer lo que venga después
\
. Así es como lo harías:Eso coincidirá con todo (
.*
) hasta una barra diagonal inversa (aquí, estamos escapando, así que es\\
), luego coincidirá con todo después de la barra diagonal inversa (.*
), pero lo convertirá en un grupo de captura (es decir, se colocará entre corchetes alrededor, pero también tenemos que escapar ellos, entonces\(.*\)
). Ahora que tenemos lo que viene después\
de la cadena como un grupo de captura, lo imprimimos haciendo referencia a él\1
.Puede usar el
sed
comando anterior con cualquier nombre de dominio, no necesariamenterandomcollege-nt
.fuente
Otro
sed
:o POSIXY:
fuente
sh
característica POSIX . pubs.opengroup.org/onlinepubs/009604599/utilities/…Sé que quieres usar sed, pero yo usaría algo diferente ...
fuente
¿Es esta la pregunta?
Si el sting randomcollege-nt no está en uso, use el comando awk arriba / abajo.
fuente
/user90
nouser90
En su lugar, utiliza 'awk' para filtrar "user90":
fuente
Este simple comando grep hará el trabajo,
fuente
Con
sed
eliminar todo en una cadena antes de un carácter específico (definir en doble paréntesis [Carácter específico]).Significa reemplazar todos los
.*[\]
caracteres ( ) antes de un\
carácter con un espacio en blanco (//
)Si tiene un archivo y desea reemplazarlo, use el
-i
indicador ensed
comando como este:fuente
Se hizo la pregunta original
sed
, pero veo que las alternativas son populares aquí.Si está utilizando Bash, la expansión de parámetros es, con mucho, la más simple:
Si potencialmente espera más de una barra invertida, duplique los signos hash:
Para obtener más información
man bash
y buscarParameter Expansion
.fuente
En caso de que alguien esté tratando de eliminar un comentario
# server_tokens off;
de nginx automáticamente para ayudar con las operaciones de desarrollo automático:sudo sed -ri 's/#\s(server_tokens off;)/\1/' /etc/nginx/nginx.conf
.Probado y funcionando para nginx / 1.12.1 en Ubuntu 16.04 LTS. Respuesta relacionada para bloquear NGINX desactivando los tokens del servidor aquí .
fuente