Shell脚本如何显示搜索字符串的具体内容?

时间:2012-06-01 11:23:38

标签: unix

这是我的问题:

/path/newdir/newfile.csv

示例输入搜索字符串: 123456789

示例输出:

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

3 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:0)

命令grep用于搜索文件中的字符串。在你的例子中,你会这样做:

grep 123456789 /path/newdir/newfile.csv

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

grep -A <lines before> -B <lines after> 123456789 /path/newdir/newfile.csv

答案 2 :(得分: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}'

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