编辑:Grep/Awk-从表中打印特定信息

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

但是,我在正则表达式中遇到语法错误,我不知道如何从这一步开始。

任何提示?

Tim*_*and 2

使用cutand sortwith-u选项打印唯一值:

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 正则表达式