Unix (修改的描述性)Shell脚本,以了解如何显示搜索字符串的特定内容?

Unix (修改的描述性)Shell脚本,以了解如何显示搜索字符串的特定内容?,unix,Unix,我的问题是: /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

我的问题是:

/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
这正是我需要的。你能帮我吗?

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)
您可以使用一行程序获得预期的结果,无论字段的数量如何,只需编写正则表达式即可

# 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

尝试使用grep命令。Bt我只能检索到一个参数,我已经给出了一些说明:grep 123456789 newfile.csv@Jaguar:u能帮我plzz吗?请澄清您的输入数据,是klashxx假设的全部在一行上,还是Kev回复的多行记录?要正确显示数据,请使用编辑框顶部的“代码”格式工具“{}”。选择要按原样显示的文本,不进行段落换行等操作,然后单击“{}”。祝你好运