1

这是我的查询:

/path/newdir/newfile.csv

示例输入搜索字符串:123456789

示例输出:

样品号:123456789 时间:2012-05-29T10:21:06Z 时间:2012-05-29T13:07:46Z

4

3 回答 3

1

您可以尝试使用 sed,

sed '/123456789/s/\(Sample Number.*\) \(Time In.*\) \(Time Out: [^ ]\+\) \(.*\)/\1 \2 \3/g' newfile.csv

我认为您的 newfile.csv 看起来只是这样。我认为是这样。

文件内容:

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

我希望这会对你有所帮助。

于 2012-06-01T12:16:56.477 回答
0

grep 命令用于在文件中搜索字符串。在您的示例中,您将执行以下操作:

grep 123456789 /path/newdir/newfile.csv

您还可以在输出中包含上下文:

grep -A <lines before> -B <lines after> 123456789 /path/newdir/newfile.csv
于 2012-06-01T11:29:41.160 回答
0

让我再猜一次。

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

我们可以使用 awk:

awk -v re=gfjgkgkgjg -F ": " '$1~/^Sample Number$/{sn=$2}$1~/^Time In$/{tin=$2}$1~/^Time Out$/{out=$2}$1~/^some data $/{data=$2}$2~re{print"Sample Number: "sn" Time In: "tin" Time Out: "out" Data: "data}'

如果您与最后一行匹配,则需要添加一些状态自动化以在最后一行打印收集的数据。

于 2012-06-01T12:37:47.517 回答