Como faço para obter isso:
randomcollege-nt\user90
para isso:
user90
usando sed
?
command-line
sed
text-processing
Roboman1723
fonte
fonte
man the_command_name
e você receberá um manual de instruções útil para o comando. Você também pode ir para www.google.com e digitar "command_name tutorial" e encontrará vários guias passo a passo.sed
visita: grymoire.com/Unix/Sed.htmlRespostas:
Eu usaria um simples
grep
para procuraruser90
:Se user90 não for constante, prefira este comando:
Finalmente, use
sed
para editar o arquivo no local:Ou para corresponder a todas as contas de usuário possíveis:
fonte
grep -F
a string inteira.Você está analisando algum texto para extrair o nome de usuário de uma
domain\username
string, provavelmente do Windows. A maioria das respostas acima trata apenas da sua sequência de exemplo específica.A melhor maneira de fazer isso é usar o regex no sed para extrair o que vier depois
\
. Aqui está como você faria isso:Isso corresponderá a tudo (
.*
) até uma barra invertida (aqui, estamos escapando, por isso é\\
), depois corresponderá a tudo após a barra invertida (.*
), mas transformando-o em um grupo de captura (ou seja, entre colchetes, mas também precisaremos escapar) eles, então\(.*\)
). Agora que temos o que vem depois da\
string como um grupo de captura, imprimimos fazendo referência a ele\1
.Você pode usar o
sed
comando acima com qualquer nome de domínio, não necessariamenterandomcollege-nt
.fonte
Outro
sed
:ou POSIXly:
fonte
sh
recurso POSIX . pubs.opengroup.org/onlinepubs/009604599/utilities/...Eu sei que você quer usar o sed, mas eu usaria algo diferente ...
fonte
Essa é a pergunta?
se o sting randomcollege-nt não for contant, use o comando awk acima / abaixo.
fonte
/user90
nãouser90
Em vez disso, você usa 'awk' para filtrar "user90":
fonte
Este comando grep simples fará o trabalho,
fonte
Com
sed
excluir tudo em uma sequência antes de um caractere específico (defina entre colchetes [Caractere específico]).Significa substituir todos os
.*[\]
caracteres ( ) antes de um\
caractere por caracteres de espaço em branco (//
)Se você possui um arquivo e deseja substituir, use
-i
flag flag nosed
comando como este:fonte
A pergunta original foi solicitada
sed
, mas vejo que as alternativas são populares aqui.Se você estiver usando o Bash, a expansão de parâmetros é de longe a mais simples:
Se você está potencialmente esperando mais de uma barra invertida, duplique os sinais de hash:
Para mais informações,
man bash
procureParameter Expansion
.fonte
Caso alguém esteja tentando remover um comentário
# server_tokens off;
do nginx automaticamente para ajudar nas dev-ops automáticas:sudo sed -ri 's/#\s(server_tokens off;)/\1/' /etc/nginx/nginx.conf
.Testado e funcionando para o nginx / 1.12.1 no Ubuntu 16.04 LTS. Resposta relacionada ao bloqueio do NGINX desativando os tokens do servidor aqui .
fonte