Linux에서 생년월일에서 생년월일을 추출하는 방법

Linux에서 생년월일에서 생년월일을 추출하는 방법

내 파일에 대한 입력은 다음과 같습니다

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

출력이 다음과 같기를 원합니다.

Koe par 1992 nep
Ler par 2000 is

답변1

awk잘 모르겠지만 sed작동합니다.

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

열을 깔끔하게 정렬하는 것이 중요하다면 다음을 수행하세요.

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


birthdates이 파일은 어디에 있습니까:

id  birthdates  pref
Koe 22-10-1992  nep
Ler 10-04-2000  sis

sed --version
sed (GNU sed) 4.2.2

답변2

그리고 awk:

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

답변3

다음 코드가 작동합니다.

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

예:

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\}\)/\1/g' < myfile.txt > output.txt 
ron@ron:~$ cat output.txt 
id  birthyears  pref
Koe 1992  nep
Ler 2000  sis

답변4

sed -r 's/(.+)[ ]+(.+)[ ]+([0-9]{2}-[0-9]{2}-)([0-9]{4})[ ]+(.+)/\1 \2 \4 \5/'

관련 정보