我有这个文件,我想打印所有大小不是 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