使用shell脚本在文本中找到特殊块

时间:2014-08-12 11:33:13

标签: linux shell

我必须得到特定版本的特殊行(例如v2.0.1或v2.0.2等)

例如,对于输入" v2.0.2",我想要以下输出:

==2012-01-02 v2.0.2

some information about B..

这是我的textfile sample.txt:

==2012-01-01 v2.0.1

some information about A..

==2012-01-02 v2.0.2

some information about B..

==2012-01-03 v2.0.4

some information about C..

2 个答案:

答案 0 :(得分:0)

awk -v s="$ver" 'BEGIN{gsub(/\./,"[.]",s)}$0~s{p=7;print;next}p&&/^==/{p=0}p' file

$ver是一个shell var,包含搜索字符串。

BEGIN{}块用于转义. (dot),因为稍后我们会将其用作动态regexp。

答案 1 :(得分:0)

假设您的文件格式与上面显示的问题完全相似,即您只需输入下一行,那么可以使用简单的grep命令完成此操作,

[root@giam06 home]# grep -A 2 "v2.0.2" file.txt
==2012-01-02 v2.0.2

some information about B..
[root@giam06 home]#

如果你事先知道没有线路,那么你可以使用-A(没有线路)改变它们,否则需要AWK脚本。