Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk Grep多个图案和打印图案及其前几行_Awk_Sed - Fatal编程技术网

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