sed removendo string ignorando espaço. [RESOLVIDO]

1. sed removendo string ignorando espaço. [RESOLVIDO]

Jorge Santos
jorgessn

(usa Ubuntu)

Enviado em 25/09/2021 - 19:22h

Boa noite, tenho esse comando doado por nosso colega Oliver, problema que ele pega a string na variavel $userDelete e ignora os espaços, por exemplo:
Tenho o usuario financeiro e o usuário finan, quando executo o comando com a variavel contendo a string finan pra apagar o usuário finan do arquivo txt, ele mantem o usuário finan e apaga o usuário financeiro por conter finan na string. Eu queria que ele lê-se a string até o próximo caracter espaço.
Segue o comando com erro:
$Comando=`sudo -u root awk 'NR>15 && /$userDelete/{c++;if(c=1) cmd="sed -i \""NR",+d;\" /users.txt";system(cmd);exit}' /users.txt`;
Agradeço a ajuda desde já!


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 18/11/2021 - 19:06h


jorgessn escreveu:


Boa tarde caro Oliver,
Eu quero que o comando apague a linha do arquivo users que contem a variavel userDelete mas não altere nada no arquivo antes da linha 10, apenas depois da linha 10.
Arquivo users é uma lista com apenas um usuário por linha e as 10 primeiras linhas não pode alterar.
Por exemplo, o arquivo contem 12 nomes:

system
finan
root
mail
adm1
adm2
adm3
adm4
adm5
adm6
adm7

finan
escoladoceencanto
sci
financeiro
contabil

repare que tem o usuário finan na linha 2 e depois da linha 10,
a variável contem o usuário finan mas o código só pode excluir após a linha 10, o finan da linha 2 não pode ser excluído.
Do jeito que esta o código não ta funcionando pois não remove nenhum dos usuarios finan e eu queria que ele removesse apenas o depois da linha 10.
Se eu usar o sed puro ele funciona mas ele apaga antes da linha 10 também.

Obrigado Oliver!

Boa noite Jorge.
Se quer deletar uma linha especifica com o "SED", use o endereço da mesma, que no caso é o Nº da linha.

Exemplo:
sed -i '12d;' arquivo
----------------------------------------------------------------------------------------------------------------
cat user.txt
system
finan
root
mail
adm1
adm2
adm3
adm4
adm5
adm6
finan
adm7
finan
escoladoceencanto
finan
sci
finan
financeiro
contabil
finan
----------------------------------------------------------------------------------------------------------------
Simulação:
Neste caso, tudo >10 && finan
Mostra o comando sed criado pelo awk:

awk 'NR>10 && $0~/\<'$user'\>/{print "sed -i \""NR"d;\" user.txt";}' user.txt
sed -i "11d;" user.txt
sed -i "13d;" user.txt
sed -i "15d;" user.txt
sed -i "17d;" user.txt
sed -i "20d;" user.txt

Para limitar, caso tenha mais de uma ocorrência, coloque o "exit".
awk 'NR>10 && $0~/\<'$user'\>/ {print "sed -i \""NR"d;\" user.txt";exit}' user.txt
sed -i "11d;" user.txt

Excluindo:
awk 'NR>10 && $0~/\<'$user'\>/ {system("sed -i \""NR"d;\" user.txt");exit}' user.txt 

Para "apagar" uma ocorrência especifica, use o count++ e o if:
awk 'NR>10 && $0~/\<'$user'\>/{c++;if(c==2) system("sed -i \""NR"d;\" user.txt");}' user.txt 


É isso, espero que resolva.....
Note que no sed, usei o NR, que é o número da linha.....
______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________


3. Re: sed removendo string ignorando espaço.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 25/09/2021 - 19:50h

jorgessn escreveu:

Boa noite, tenho esse comando doado por nosso colega Oliver, problema que ele pega a string na variavel $userDelete e ignora os espaços, por exemplo:
Tenho o usuario financeiro e o usuário finan, quando executo o comando com a variavel contendo a string finan pra apagar o usuário finan do arquivo txt, ele mantem o usuário finan e apaga o usuário financeiro por conter finan na string. Eu queria que ele lê-se a string até o próximo caracter espaço.
Segue o comando com erro:
$Comando=`sudo -u root awk 'NR>15 && /$userDelete/{c++;if(c=1) cmd="sed -i \""NR",+d;\" /users.txt";system(cmd);exit}' /users.txt`;
Agradeço a ajuda desde já!

-------------------------------------------------------------------------------------------------------
Boa noite Jorge.
Só usar o "delimitador de borda",
Para tanto, use o gawk.
Ou pode usar "um padrão" do próprio arquivo.....
Poste um trecho do "users.txt".
-------------------------------------------------------------------------------------------------------
Em tempo,
Não é o comando que tem ERRO!
Na ocasião não fui comunicado sobre nome de usuário 'semelhante'.
______________________________________________________________________
Importante:
wget -qO- https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



4. sed removendo string ignorando espaço.

Jorge Santos
jorgessn

(usa Ubuntu)

Enviado em 25/09/2021 - 21:41h


Obrigado Oliver, sempre vc... Segue o arquivo users.txt

# Allow access
root
admin







contabilidade
rh
contabilidade
escoladocecanto
finan


5. Re: sed removendo string ignorando espaço.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 25/09/2021 - 23:31h

jorgessn escreveu:


Obrigado Oliver, sempre vc... Segue o arquivo users.txt

# Allow access
root
admin
contabilidade
rh
contabilidade
escoladocecanto
finan

Explica o que quer excluir, quais as regras....
Acredito que o comando:
awk 'NR>15 && /$userDelete/{c++;if(c=1) cmd="sed -i \""NR",+d;\" /users.txt";system(cmd);exit}' /users.txt
não é cabível para esta situação.....
O comando acima, considera a partir da linha "15 && /$userDelete/"
Visto que, tem um usuário por linha, é bem fácil casar o padrão.....

______________________________________________________________________
Importante:
wget -qO- https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



6. Re: sed removendo string ignorando espaço. [RESOLVIDO]

Jorge Santos
jorgessn

(usa Ubuntu)

Enviado em 04/10/2021 - 14:44h

"
Em tempo,
Não é o comando que tem ERRO!
Na ocasião não fui comunicado sobre nome de usuário 'semelhante'."

Eu sei disso Oliver, seu comando nao tem erro, é perfeito! Eu só nao expliquei direito, eu sei disso. Eu vou pesquisar como usar o delimitador de borda no comando.Se puder me ajudar a aplicar nesse comando fico grato. Obrigado Oliver.


7. Re: sed removendo string ignorando espaço. [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 04/10/2021 - 14:59h


jorgessn escreveu:

"
Em tempo,
Não é o comando que tem ERRO!
Na ocasião não fui comunicado sobre nome de usuário 'semelhante'."

Eu sei disso Oliver, seu comando nao tem erro, é perfeito! Eu só nao expliquei direito, eu sei disso. Eu vou pesquisar como usar o delimitador de borda no comando.Se puder me ajudar a aplicar nesse comando fico grato. Obrigado Oliver.


Como tem um usuário por linha,
Use:
sed -i "/^${userDelete}$/d;" users.txt



______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.


______________________________________________________________________



8. sed removendo string ignorando espaço.

Jorge Santos
jorgessn

(usa Ubuntu)

Enviado em 16/11/2021 - 00:19h

Boa noite vol, Oliver!
Desculpem a demora, dias corridos por aqui.
O comando ficou assim Oliver, mas nao deu certo nao e o mais doido, ta trocando a senha do root com a do usuario finan e agora nao remove nem o financeiro e nem o finan

$Comando=`sudo -u root awk 'NR>15 && /$userDelete/{c++;if(c=1) cmd="sed -i /^${userDelete}$/d;" /home/users;system(cmd);exit}' /home/users`;

Agradeço muito a sua ajuda MSOLIVER!



9. Re: sed removendo string ignorando espaço. [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 16/11/2021 - 01:21h


jorgessn escreveu:

Boa noite vol, Oliver!
Desculpem a demora, dias corridos por aqui.
O comando ficou assim Oliver, mas nao deu certo nao e o mais doido, ta trocando a senha do root com a do usuario finan e agora nao remove nem o financeiro e nem o finan

$Comando=`sudo -u root awk 'NR>15 && /$userDelete/{c++;if(c=1) cmd="sed -i /^${userDelete}$/d;" /home/users;system(cmd);exit}' /home/users`;

Agradeço muito a sua ajuda MSOLIVER!

Use o comando sed sugerido em:
04/10/2021 - 14:59h

O comando:
awk 'NR>15 && /$userDelete/{c++;if(c=1) cmd="sed -i /^${userDelete}$/d;" /home/users;system(cmd);exit}' /home/users
Foi criado para uma situação específica!

______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



10. Re: sed removendo string ignorando espaço. [RESOLVIDO]

Naquin
Naquin263

(usa PCLinuxOS)

Enviado em 16/11/2021 - 03:14h


I altogether like your gave limits as the post you passed on has some extraordinary data which is completely significant for me.


https://www.myccpay.today/


11. sed removendo string ignorando espaço.

Jorge Santos
jorgessn

(usa Ubuntu)

Enviado em 16/11/2021 - 22:42h

Naquin263, I'm happy about it. good luck!
MSOLIVER,
Obrigado mais uma vez! Nao sei o que acontece, a permissão do arquivo users esta em 777 e o codigo esta trocando a senha do root com a senha do usuario finan e o arquivo users nao esta apagando o usuario finan, segue o codigo como esta:

$Comando=`sudo -u root awk 'NR>15 && /$userDelete/{c++;if(c=1) cmd="sed -i /^${userDelete}$/d;" /home/users;system(cmd);exit}' /home/users`;

Muito obrigado amigo Oliver!


12. Re: sed removendo string ignorando espaço. [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 16/11/2021 - 23:32h


jorgessn escreveu:

Naquin263, I'm happy about it. good luck!
MSOLIVER,
Obrigado mais uma vez! Nao sei o que acontece, a permissão do arquivo users esta em 777 e o codigo esta trocando a senha do root com a senha do usuario finan e o arquivo users nao esta apagando o usuario finan, segue o codigo como esta:

$Comando=`sudo -u root awk 'NR>15 && /$userDelete/{c++;if(c=1) cmd="sed -i /^${userDelete}$/d;" /home/users;system(cmd);exit}' /home/users`;

Muito obrigado amigo Oliver!

Boa noite Jorge,
$Comando=`sudo -u root awk 'NR>15 && /$userDelete/{c++;if(c=1) cmd="sed -i /^${userDelete}$/d;" /home/users;system(cmd);exit}' /home/users`;
Nas postagens iniciais, o arquivo era users.txt....
Poste o conteúdo desse arquivo.....
Não demore dois meses para responder..... :)
______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts