特定のサイズではない行を検索する 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文字がない場合は印刷します。

より肯定的に、dエレテラインははい21文字の長さ(デフォルトは別の行を印刷します):

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

関連情報