Unix Shell脚本如何显示搜索字符串的特定内容?

Unix Shell脚本如何显示搜索字符串的特定内容?,unix,Unix,我的问题是: /路径/newdir/newfile.csv 输入搜索字符串示例: 123456789 示例输出: 样本编号:123456789 时间:2012-05-29T10:21:06Z 超时:2012-05-29T13:07:46Z命令grep用于搜索文件中的字符串。在您的示例中,您将执行以下操作: grep 123456789 /path/newdir/newfile.csv 您还可以在输出中包含上下文,包括: grep -A <lines before> -B <l

我的问题是:

/路径/newdir/newfile.csv

输入搜索字符串示例: 123456789

示例输出:

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

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

grep 123456789 /path/newdir/newfile.csv
您还可以在输出中包含上下文,包括:

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

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

grep 123456789 /path/newdir/newfile.csv
您还可以在输出中包含上下文,包括:

grep -A <lines before> -B <lines after> 123456789 /path/newdir/newfile.csv
grep-A-B 123456789/path/newdir/newfile.csv
您可以尝试使用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
我希望这将对您有所帮助。

您可以尝试使用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
我希望这对你有帮助。

让我再猜一次

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}'
如果要与最后一行进行匹配,则需要添加一些状态自动化来打印最后一行记录中收集的数据。

让我再猜一次

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}'


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

欢迎使用SO Jackie!我不知道你在这里要求什么帮助。你能说得更具体些吗?您尝试过什么?HI AI G:我想在路径“/path/newdir/newfile.csv”中的文件newfile.csv中找到一个字符串,我必须输入一个搜索字符串,例如:“输入搜索字符串:123456789”我必须获得与搜索字符串相关联的输出参数,例如,示例输出:示例编号:123456789时间输入:2012-05-29T10:21:06Z超时:2012-05-29T13:07:46Z我需要一个shell脚本来执行上述操作。在这方面你能帮我吗/你试过什么吗?grep和awk怎么样?是的,我试过grep。它找到了字符串。bt我需要显示搜索字符串的特定参数。grep/awk不工作的newfile.csv看起来像什么?欢迎来到SO Jackie!我不知道你在这里要求什么帮助。你能说得更具体些吗?您尝试过什么?HI AI G:我想在路径“/path/newdir/newfile.csv”中的文件newfile.csv中找到一个字符串,我必须输入一个搜索字符串,例如:“输入搜索字符串:123456789”我必须获得与搜索字符串相关联的输出参数,例如,示例输出:示例编号:123456789时间输入:2012-05-29T10:21:06Z超时:2012-05-29T13:07:46Z我需要一个shell脚本来执行上述操作。在这方面你能帮我吗/你试过什么吗?grep和awk怎么样?是的,我试过grep。它找到了字符串。bt我需要显示该搜索字符串的特定参数。grep/awk不起作用的newfile.csv看起来像什么?假设newfile.csv的内容如下:样本号:123456789时间输入:2012-05-29T10:21:06Z超时:2012-05-29T13:07:46Z一些数据:GFJGKGJG我需要显示样本号,Time-In:和Time-Out:通过使用grep命令,我只能显示1个参数。我需要显示与之相关的3个参数。假设newfile.csv的内容如下:示例编号:123456789输入时间:2012-05-29T10:21:06Z超时:2012-05-29T13:07:46Z一些数据:gfjgkgjg我需要显示示例编号、输入时间:和超时:使用grep命令,我只能显示1个参数。我需要显示与之相关的3个参数。永远不要将grep管道传输到sed。使用sed选择:
sed'/pattern/s/../'
grep pattern | sed's/../'
@William Pursell,谢谢你指出。现在更新了帖子。@Sat:非常感谢你。它工作得非常好。我对这个论坛很陌生。@SAT:newtext.csv如下所示:记录1------样本号:123456789时间:2012-05-29T10:21:06Z超时:2012-05-29T13:07:46Z一些数据:gfjgkgjg一些代码:23-87-98-70假设newtext.csv中有100条记录,那么,现在我需要输入的I/p字符串的参数,下面是示例输入搜索字符串:123456789示例输出:示例编号:123456789时间输入:2012-05-29T10:21:06Z超时:2012-05-29T13:07:46Z-------------------------------------------这正是我需要的。你能帮帮我吗?千万别把格雷普告诉塞德。使用sed选择:
sed'/pattern/s/../'
grep pattern | sed's/../'
@William Pursell,谢谢你指出。现在更新了帖子。@Sat:非常感谢你。它工作得非常好。我对这个论坛很陌生。@SAT:newtext.csv如下所示:记录1------样本号:123456789时间:2012-05-29T10:21:06Z超时:2012-05-29T13:07:46Z一些数据:gfjgkgjg一些代码:23-87-98-70假设newtext.csv中有100条记录,那么,现在我需要输入的I/p字符串的参数,下面是示例输入搜索字符串:123456789示例输出:示例编号:123456789时间输入:2012-05-29T10:21:06Z超时:2012-05-29T13:07:46Z-------------------------------------------这正是我需要的。你能帮帮我吗?