MacのBashでこれを行うことができます。
grep ".\{81,\}" foo.txt
81 文字以上を含むファイルのすべての行をインポートし、foo.txt
次を使用するには:
grep -v ".\{81,\}" foo.txt
最大80文字のすべての行を取得します。 (-v
「逆に」)
しかし、私が使うなら
grep ".\{,81\}" foo.txt
それは言うでしょうgrep: invalid repetition count(s)
。
私が使うなら
grep ".\{0,81\}" foo.txt
長さに関係なくすべての行を提供します。
上記の最後の2つのフォームはどのように機能しますか?正規表現形式に従います。
.{,80}
80文字以下のすべての文字を表します。
答え1
grep ".\{0,81\}" foo.txt
すべての行がこれと一致します。行に82文字がある場合、行も81文字になります。あなたが必要とする:
- 行の先頭から最後まで 0 ~ 81 文字になるように正規表現を
^
and で囲みます。または$
- 行がこの正規表現と正確に一致することを指定するために使用されます
-x
(上記のオプションと同じ)。
だから:
grep "^.\{0,81\}$" foo.txt
grep -x ".\{0,81\}" foo.txt
答え2
すべてのUNIXシステムのすべてのシェルでawkを使用します。
$ printf 'abcdef\nABC\n' | awk 'length($0) > 3'
abcdef
$ printf 'abcdef\nABC\n' | awk 'length($0) < 3'
$
$ printf 'abcdef\nABC\n' | awk 'length($0) <= 3'
ABC
簡単に考えて覚えてくださいことわざのように:
何人かの人々が問題に直面したとき、「わかりました。正規表現を使います」と思います。今、彼らは2つの問題を抱えています。