shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Pegar somente o nome completo


From: Julio C. Neves
Subject: Re: [shell-script] Pegar somente o nome completo
Date: Sat, 22 Mar 2014 22:57:45 -0300

Fala Junior,
veja:

$ sed -r 's/ *$//;s/[0-9]+ (.*) .*/\1/' ARQUIVO

Isso é um sed dividido que executa 2 cmds substitute (s) e estão separados pelo ponto e vírgula.

No primeiro, tiro eventuais espaços em branco que podem fortuitamente estar no final de alguma linha do arquivo. No segundo, que é o que interessa, defino os números que existem até o primeiro espaço em branco ([0-9]+ ). Em seguida, como o .* é altamente guloso, ele casará com tudo compreendido entre o 1º espaço e o último. Os parênteses que usei, foram para que o sed guardasse o texto casado (no caso o nome). O segundo .* casa com o resto do registro. Isso tudo será substituído pelo texto armazenado (retrovisor \1).

Para entender isso, veja:
$ sed -r 's|([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})|\3-\2-\1|' <<< 22/03/2014
2014-03-22
$ sed -r 's|([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})|\3-\2-\1|' <<< 22/3/2014
2014-3-22

Neste caso usei a barra vertical (|) como separador dos argumentos do sed para não confundir com as barras da data. Ele troca dia/mês/ano por ano-mês-dia, estando o dia e/ou preenchido com zeros à esquerda ou não.

Abcs,
Julio
@juliobash

Próximos cursos de Shell

Cidade

Local

Período

Rio de Janeiro

EDX

07-11/04

Dou treinamento de shell em qualquer cidade.
Para detalhes, entre em contato por email ou
echo 436233889341364416673541503686485725801923229706P | dc 



Em 22 de março de 2014 20:30, <address@hidden> escreveu:
 

Olá Pessoal,

Como criar um script que mostre somente o nome completo. O script está criado, mas gostaria de saber se é possível melhorar o comando para pegar o nome da pessoa, pois eu utilizei os comandos echo e cut, respectivamente. Gostaria de saber se é possível a utilização de apenas um comando, sei lá sed, echo ou awk. Eu consigo dizer ao script para pegar entre o primeiro espaço até o último espaço? Segue exemplo do arquivo:

Arquivo: banco
101 Fulano de Tal Habilitado-01/01/1970
102 Donald Fauntleroy Duck 09/06/1934
103 Patinhas McPato 12/04/1867
104 Mickey Mouse 18/11/1928
105 Dippy Dawg 25/05/1932

Abaixo o script criado:

#!/bin/bash
cat banco | while read LINHA
do
    NOME="`echo ${LINHA% *} | cut -d" " -f2-`"
    echo "$NOME"
done

Saída:
Fulano de Tal
Donald Fauntleroy Duck
Patinhas McPato
Mickey Mouse
Dippy Dawg

Um forte abraço a todos,
Junior Reis



reply via email to

[Prev in Thread] Current Thread [Next in Thread]