sed 命令查找不特定大小的行

sed 命令查找不特定大小的行

我有这个文件,我想打印所有大小不是 21 的行。

PASY$ type a.a
000008050110010201NNN
000008060810010201NNN
21212000008070110010201NNN
000008080310010201NNN
000008090510010201NNN
000008050110010201NNN
000008060310010201NNN
00008070110010201NNN

答案1

$ sed '/^.\{21\}$/d;q' input-file

sedd删除(因此不打印)第一行,该行的开头和结尾之间正好有 21 个字符(尽管使用了“删除”等可怕的单词,但实际文件不会被修改)。如果找到这样的行,它将立即停止处理其他行。

答案2

sed -n '/^.....................$/!p' < input-file

^如果行首 ( ) 和$行尾 ( )之间没有 21 个字符,则打印它。

更积极的是,delete 线21个字符长(默认打印其他行):

sed '/^.....................$/d' < input-file

相关内容