rob*_*lez 5 regex unix shell awk
(这个例子是根据用户的建议编辑的,考虑到我的表格显示中的一个错误)
我有一个 .csv 表,我需要从中获取某些信息。我的桌子看起来像这样:
Name, Birth
James,2001/02/03 California
Patrick,2001/02/03 Texas
Sarah,2000/03/01 Alabama
Sean,2002/02/01 New York
Michael,2002/02/01 Ontario
Run Code Online (Sandbox Code Playgroud)
从这里开始,我只需要按升序打印唯一的生日,如下所示:
2000/03/01
2001/02/03
2002/02/01
Run Code Online (Sandbox Code Playgroud)
我想到了一个正则表达式来识别日期,例如:
awk '/[0-9]{4}/[0-9]{2}/[0-9]/{2}/' students.csv
但是,我在正则表达式中遇到语法错误,我不知道如何从这一步开始。
任何提示?
cut -d' ' -f2 students.csv | sort -u > out_file
Run Code Online (Sandbox Code Playgroud)
您还可以使用grep代替cut:
grep -Po '\d\d\d\d/\d\d/\d\d' students.csv | sort -u > out_file
Run Code Online (Sandbox Code Playgroud)
在这里,GNUgrep使用以下选项:
-P:使用 Perl 正则表达式。
-o:仅打印匹配项(每行 1 个匹配项),而不是整行。
还请参见:
perlre - Perl 正则表达式