0

这是我的查询:

/path/newdir/newtext.csv 

newtext.csv 如下所示:

记录 1

第 1 行第 2 行样品编号:123456789(第 3 行)| | | | | 时间:2012-05-29T10:21:06Z(第 21 行)| | | 超时:2012-05-29T13:07:46Z(第 30 行)

记录 2

第 1 行第 2 行样品编号:363214563(第 3 行)| | | | | 时间:2012-05-29T10:21:06Z(第 21 行)| | | 超时:2012-05-29T13:07:46Z(第 30 行)

记录 3

第 1 行第 2 行样品编号:987654321(第 3 行)| | | | | 时间:2012-05-29T10:21:06Z(第 21 行)| | | 超时:2012-05-29T13:07:46Z(第 30 行)

假设 newtext.csv 中有这样 100 条记录所以,现在我需要输入的 i/p 字符串的参数,如下所示

示例输入搜索字符串:

123456789

示例输出:

Sample Number: 123456789
Time In: 2012-05-29T10:21:06Z
Time Out: 2012-05-29T13:07:46Z

这正是我需要的。你能帮我么 ?

4

1 回答 1

0

Perl应该更适合这个任务。

    $ cat newtext.csv 
    line 1 line 2 Sample Number: 123456789 (line no. 3) | | | | | Time In: 2012-05-29T10:21:06Z (line no. 21) | | | Time Out: 2012-05-29T13:07:46Z (line no. 30)
    line 1 line 2 Sample Number: 363214563 (line no. 3) | | | | | Time In: 2012-05-29T10:21:06Z (line no. 21) | | | Time Out: 2012-05-29T13:07:46Z (line no. 30)
    line 1 line 2 Sample Number: 987654321 (line no. 3) | | | | | Time In: 2012-05-29T10:21:06Z (line no. 21) | | | Time Out: 2012-05-29T13:07:46Z (line no. 30)

您可以使用one-liner获得预期结果,无论字段数量如何,只需编写正则表达式即可。

# perl -lane '/(Sample Number:\s*\d+).*(Time In:\s*\S+).*(Time Out:\s*\S+)/;print $1."\n".$2."\n".$3' newtext.csv
Sample Number: 123456789
Time In: 2012-05-29T10:21:06Z
Time Out: 2012-05-29T13:07:46Z
Sample Number: 363214563
Time In: 2012-05-29T10:21:06Z
Time Out: 2012-05-29T13:07:46Z
Sample Number: 987654321
Time In: 2012-05-29T10:21:06Z
Time Out: 2012-05-29T13:07:46Z
于 2012-06-04T07:22:26.683 回答