如何删除除第一个以外的与模式不匹配的行?
要删除行,除非我先使用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]
谢谢
输出第一行和包含rcu
的所有行:
sed -n '1p; /rcu/p' file
[您也可以制作一个脚本来读取文件,然后将与模式不匹配的第一行“提取”到另一个临时文件或字符串中,进行其他操作,例如删除要删除的行并粘贴该行返回文件中的同一位置。