私のファイルへの入力は次のとおりです。
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/'