这是我的问题:
/path/newdir/newtext.csv
newtext.csv如下所示:
第1行 第2行 样品编号:123456789(第3行) | | | | | 时间:2012-05-29T10:21:06Z(第21行) | | | 超时时间:2012-05-29T13:07:46Z(第30行)
第1行 第2行 型号:363214563(第3行) | | | | | 时间:2012-05-29T10:21:06Z(第21行) | | | 超时时间:2012-05-29T13:07:46Z(第30行)
第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
这正是我需要的。你能帮我吗?
答案 0 :(得分: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