Awk Grep多个图案和打印图案及其前几行
我有一个包含数据的文件Awk Grep多个图案和打印图案及其前几行,awk,sed,Awk,Sed,我有一个包含数据的文件 cell A function (A1A2) Next state Test cell Type combinational (CO) output (A1) input (A2) input cell X function ((A1+A2)B) Hold rising Type combinational Min_pulse_width (Z) output (A1) input (A2) input (B) input 我希望输出为 cell A functi
cell A
function (A1A2)
Next state
Test cell
Type combinational
(CO)
output
(A1)
input
(A2)
input
cell X
function ((A1+A2)B)
Hold rising
Type combinational
Min_pulse_width
(Z)
output
(A1)
input
(A2)
input
(B)
input
我希望输出为
cell A
function (A1A2)
Type combinational
(CO)
output
(A1)
input
(A2)
input
cell X
function ((A1+A2)B)
Type combinational
(Z)
output
(A1)
input
(A2)
input
(B)
input
输入文件具有上面所示的多行格式,其中包含许多参数。
但是从这个文件中,我只想grep单元格、函数、类型、输出及其前一行、输入及其前一行
我可以使用grep单元格、函数、类型
grep "cell|function|type" file
并且可以grep输出和它的前一行,输入和它的前一行作为
awk '/input/{print x;print};{x=$0}' file
awk '/output/{print x;print};{x=$0}' file
但我如何才能同时完成以上3个步骤并显示输出
grep -Ev '(Next state)|(Test cell)|(Hold rising)|(Min_pulse_width)' file
使用-E启用正则表达式,使用-v启用反向搜索。然后说明您不想搜索的术语。您可以尝试此awk
:
awk'/^(in | out)put/{print p;print}/^(cell | function | Type)/;{p=$0}文件
细胞A
功能(A1A2)
类型组合
(CO)
输出
(A1)
输入
(A2)
输入
细胞X
功能((A1+A2)B)
类型组合
(Z)
输出
(A1)
输入
(A2)
输入
(B)
输入
这可能适合您(GNU-sed):
关闭隐式打印-n
并打开更简单的regexp-E
打开一个两行窗口
使用模式匹配打印所需字符串
删除所有内容并重复。我尝试了此操作,正确获取了单元格函数类型,但无法获取输入和输出。您可以在显示的输出中看到input
和output
行。可以尝试:awk'/^(in | out)put/{print p;print}/^(cell | function | Type)/;{p=$0}'文件
Yes。。现在它成功了。。
sed -nE 'N;/^(cell|function|Type)/P;/\n(output|input)/p;D' file