Como posso extrair anos de nascimento de datas de nascimento no linux

1

a entrada do meu arquivo é a seguinte

Koe par 22-10-1992 nep
Ler par 10-04-2000 sis

Eu gostaria que a saída fosse a seguinte

Koe par 1992 nep
Ler par 2000 is
    
por Skhalo 23.11.2016 / 17:31

5 respostas

2

Eu não sei sobre awk , mas esse sed funciona:

sed -E 's/dates/years/;s/[0-9]{2}-[0-9]{2}-//g' birthdates 
id  birthyears  pref
Koe 1992  nep
Ler 2000  sis

Se for importante manter as colunas perfeitamente alinhadas, faça:

sed -E 's/dates/years/;s/[0-9]{2}-[0-9]{2}-([0-9]{4})/      /g' birthdates 
id  birthyears  pref
Koe 1992        nep
Ler 2000        sis


Onde birthdates é este arquivo:

id  birthdates  pref
Koe 22-10-1992  nep
Ler 10-04-2000  sis
sed --version
sed (GNU sed) 4.2.2
    
por 23.11.2016 / 17:47
1

com awk :

awk '{if (NR==1) {print $0} else {split($2,result,"-"); print $1 " " result[3] " " $3}}' birthdates
    
por 23.11.2016 / 17:59
0

O código a seguir deve funcionar:

sed 's/birthdates/birthyears/g; s/[0-9]\{1,2\}-[0-9]\{1,2\}-\([0-9]\{4\}\)//g' < myfile.txt > output.txt

Exemplo:

ron@ron:~$ cat myfile.txt 
id  birthdates  pref
Koe 22-10-1992  nep
Ler 10-04-2000  sis
ron@ron:~$ sed 's/birthdates/birthyears/g; s/[0-9]\{1,2\}-[0-9]\{1,2\}-\([0-9]\{4\}\)//g' < myfile.txt > output.txt 
ron@ron:~$ cat output.txt 
id  birthyears  pref
Koe 1992  nep
Ler 2000  sis
    
por 23.11.2016 / 17:57
0
awk '{print $1,$2,$(NF-1),$NF}' FS="[ -]" inputfile
    
por 24.11.2016 / 08:01
0
sed -r 's/(.+)[ ]+(.+)[ ]+([0-9]{2}-[0-9]{2}-)([0-9]{4})[ ]+(.+)/   /'
    
por 20.01.2017 / 14:59

Tags