我必须得到特定版本的特殊行(例如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..
答案 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脚本。