与えられた範囲ではない*行の長さを「grep」する方法は?


17

注:この質問は、このQ&Aの補足です。特定の範囲の行の長さを "grep"する方法は?


8文字未満または63文字を超え、8文字以上63文字未満の行をgrepするにはどうすればよいですか?

したがって、許容される文字数は次のとおりです...

7 6 5 4 3 2 1 0

...そして...

64 65 66 67 ...

3
私はあなたが求めることを知ってgrepいますがawk、特にさらなる処理などが必要な場合(非常に柔軟で読みやすい)を考慮することができます:awk '( length($0)<8 ) || ( length($0)>63 )' 条件の#defaultアクションは条件に一致する行を印刷することです。または、$ 0上の少ない処理で:awk '{ l=length($0) ; if (( l<8 ) || l>63 ) { print $0 ;} }'
オリヴィエ・デュラック

@mikeserv-もう一度これを見てみると、dupとして他のQ&Aに近づくのがおそらく理にかなっています。
slm

@mikeserv-それは一般に苦痛です。答えをQの1つにマージする必要があり、それらは元の質問から削除されます。これはそれを行うためのガイダンスです。「質問は99%同一であり、複数の重複した質問のすべての回答を1か所にまとめると有益です。これにより、回答が削除され、ターゲットの質問に移動し、終了しますマージターゲットへのリンクを含むスタブとしての現在の質問。」
slm

私のコメントはどうなりましたか?
ドミトリーグリゴリエフ

@DmitryGrigoryev-誰かがそれを好きではなかったと思います。そこにいた人からそれを取る-それを忘れてください。
mikeserv

回答:


38
grep -xv '.\{8,63\}' <input >output

grep-xスイッチは行全体の一致を示します。つまり、一致するパターンはすべて、先頭から末尾までの行を定義する必要があるということです。やって...

grep -x pattern

...一般に同等です...

grep ^pattern$

grep-vスイッチは、行選択に対するパターンの影響を無効にします。一般的に...

grep pattern

...パターンに一致する行のみが選択されますが、-v否定パターンでは、一致しない行のみが選択されます。

...など...

grep -xv '.\{8,63\}'

...先頭から末尾までの-v8〜63 文字のすべての行に一致しgrepます。選択を無効にすると、他のすべてが印刷されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.