![sed 命令查找不特定大小的行](https://linux22.com/image/133522/sed%20%E5%91%BD%E4%BB%A4%E6%9F%A5%E6%89%BE%E4%B8%8D%E7%89%B9%E5%AE%9A%E5%A4%A7%E5%B0%8F%E7%9A%84%E8%A1%8C.png)
我有这个文件,我想打印所有大小不是 21 的行。
PASY$ type a.a
000008050110010201NNN
000008060810010201NNN
21212000008070110010201NNN
000008080310010201NNN
000008090510010201NNN
000008050110010201NNN
000008060310010201NNN
00008070110010201NNN
答案1
$ sed '/^.\{21\}$/d;q' input-file
sed
将d
删除(因此不打印)第一行,该行的开头和结尾之间正好有 21 个字符(尽管使用了“删除”等可怕的单词,但实际文件不会被修改)。如果找到这样的行,它将立即停止处理其他行。
答案2
sed -n '/^.....................$/!p' < input-file
^
如果行首 ( ) 和$
行尾 ( )之间没有 21 个字符,则打印它。
更积极的是,d
elete 线是21个字符长(默认打印其他行):
sed '/^.....................$/d' < input-file