Sed:删除没有图案的行,除了第一个

问题描述 投票:0回答:2

如何删除除第一个以外的与模式不匹配的行?

要删除行,除非我先使用sed '1!d'

要删除我使用的与模式不匹配的行sed '/pattern/!d'

我如何同时使用两个条件?像sed '1!/pattern/!d'未知命令说,它不起作用:'/'

例如(如果pattern =“ rcu”)来自输入

  PID  PPID PRI  NI    VSZ   RSS STAT     TIME CMD
    1     0  19   0  33664  4832 Ss   00:00:07 /sbin/init splash
    2     0  19   0      0     0 S    00:00:00 [kthreadd]
    3     2  39 -20      0     0 I<   00:00:00 [rcu_gp]
    4     2  39 -20      0     0 I<   00:00:00 [rcu_par_gp]
    8     2  39 -20      0     0 I<   00:00:00 [mm_percpu_wq]
    9     2  19   0      0     0 S    00:00:04 [ksoftirqd/0]

获取

  PID  PPID PRI  NI    VSZ   RSS STAT     TIME CMD
    3     2  39 -20      0     0 I<   00:00:00 [rcu_gp]
    4     2  39 -20      0     0 I<   00:00:00 [rcu_par_gp]

谢谢

bash awk sed grep
2个回答
0
投票

输出第一行和包含rcu的所有行:

sed -n '1p; /rcu/p' file

0
投票

[您也可以制作一个脚本来读取文件,然后将与模式不匹配的第一行“提取”到另一个临时文件或字符串中,进行其他操作,例如删除要删除的行并粘贴该行返回文件中的同一位置。

© www.soinside.com 2019 - 2024. All rights reserved.