我有一种情况,我想从上面两行匹配的地方获取
我有两个文件:
文件1
Ag
Ab
Ah
Av
Ax
文件2
jb:fun_0
jb:fun_jack_0
jb1:Ag
jb:fun_1
jb:fun_jack_1
jb1:Ab
jb:fun_2
jb:fun_jack_3
jb1:Ai
jb:fun_4
jb:fun_jack_4
jb1:Ah
jb:fun_5
jb:fun_jack_5
jb1:Av
jb:fun_5
jb:fun_jack_5
jb1:Al
jb:fun_5
jb:fun_jack_5
jb1:Aj
jb:fun_5
jb:fun_jack_5
jb1:Ax
我想添加for循环=>喜欢
首先它将使用file1 =>中的单词,就像Ag =>尝试在 文件2 =>如果找到匹配项,则应将匹配的那两行以上写入新的文本文件=> demo.txt
我的代码
for j in file1
do
sr=`grep -i -B2 '$j' file2`
echo $sr>>demo.txt
done
但是上面的代码不起作用=>建议我
预期输出: 在文件2 =>上面两行匹配中发现的Ag匹配应该被打印
类似输出:
=======================
jb:fun_0 # 1st line
jb:fun_jack_0 # 2nd line
jb1:Ag # => match found
=======================
jb:fun_1 # 1st line
jb:fun_jack_1 # 2nd line
jb1:Ab # => match found
=======================
应该打印出如何匹配两行以上的输出
答案 0 :(得分:2)
您可以使用以下内容:
grep -wFB2 -f file2 file1 > demo.txt
grep
选项的详细信息:
-w
仅匹配完整单词:寻找Avoid
时避免匹配Av
-B2
除匹配行外还输出前两行-f file2
从file2读取模式-F
这些模式是用换行符分隔的纯文本,而不是正则表达式您可以try it here!