grep -v和-B | -A | -C不能一起工作
我需要在Solaris机器上扫描
iostat -En
的输出,以便在找到有错误的磁盘时,将有关该磁盘的两行发送到最终输出。到目前为止这个工作正常
iostat -En | grep 'Errors: [1-9]' -A 1
但是当我试图不包括CD / DVD设备时,我碰壁了。容器标志(-A|B|C
)似乎不适用于-v
所以我不能使用它:
-bash-4.0$ iostat -En | grep -B 1 -vi "CD/DVD" | grep 'Errors: [1-9]' -A 1
c0t3d0 Soft Errors: 2 Hard Errors: 0 Transport Errors: 0
Vendor: TSSTcorp Product: CD/DVDW TS-L632D Revision: SR02 Serial No:
我不认为这里应该有任何输出,因为包含“CD / DVD”的行和它之前的行应该被删除。将它写成任何语言的脚本都很简单,但它必须是一个可以在没有安装额外脚本的情况下在主机上运行的命令,所以我想可以使用perl -e
。我不知道任何perl所以我没有尝试过这种方法。
一些例子iostat -En
输出:
-bash-4.0$ iostat -En
c0t0d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: SEAGATE Product: ST973402SSUN72G Revision: 0603 Serial No: *removed*
Size: 73.40GB <73400057856 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0 Predictive Failure Analysis: 0
c0t3d0 Soft Errors: 2 Hard Errors: 0 Transport Errors: 0
Vendor: TSSTcorp Product: CD/DVDW TS-L632D Revision: SR02 Serial No:
Size: 0.00GB <0 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 2 Predictive Failure Analysis: 0
c0t1d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: SEAGATE Product: ST973402SSUN72G Revision: 0603 Serial No: *removed*
Size: 73.40GB <73400057856 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0 Predictive Failure Analysis: 0
在这种情况下,我不应该有任何输出,因为唯一有错误的设备是光驱,我不关心那些。
c0t1d0 Soft Errors: 0 Hard Errors: 1 Transport Errors: 0
Vendor: SEAGATE Product: ST973402SSUN72G Revision: 0603 Serial No: *removed*
这是我要找的输出。有任何想法吗?
没有找到相关结果
已邀请:
2 个回复
补蹲农界维
眠缝
打印所有与图案不匹配的线条, 但是
还会在与图案不匹配的线条之前打印出所有线条,包括与图案匹配的线条。 例如,如果
包含:
然后
给你:
但是
给你:
你想要的那种处理过于复杂,不适合
。