繰り返し記号{n}を使用してこの行を印刷しようとしましたが、機能しません。のための。たとえば、長さが4文字のすべての行を印刷したいとします。
awk '/^.{4}$/' test_data
上記のコードはそれを印刷しません。重複記号を使用できるように変更するにはどうすればよいですか?私はawk '/^....$/' test_data
次の選択肢を知っていますawk 'length ==3 ' test_data
ベストアンサー1
~によるとGNU Awkユーザーガイド:機能履歴、正規表現範囲演算子のサポートがバージョン3.0に追加されましたが、最初は明示的なコマンドラインオプションが必要でした。
新しいコマンドラインオプション:
- 新しいコマンドラインオプション:
- --lint-oldオプションは、awkの元のバージョン7 Unixバージョンでは利用できなかった設定を警告するために使用されます(V7 / SVR3.1を参照)。
- awk の BWK -m オプションです。 (Brianは当時Bell Labsにいました。)この文は後で彼のawkとgawkから削除されました。
- --re-intervalオプションは、正規表現に間隔式を提供するために使用されます(正規表現演算子を参照)。
- --compatのより良い名前で--traditionalオプションを追加しました(オプションを参照)。
gawk
4.0では
間隔式が基本正規表現の一部になります。
3.xを使用しているので、gawk
次のものを使用する必要があります。
awk --re-interval '/^.{4}$/'
または
awk --posix '/^.{4}$/'
または(@StéphaneChazelasのおかげで)ポータブルソリューションが必要な場合は、次のようにします。
POSIXLY_CORRECT=anything awk '/^.{4}$/'
(他の実装ではエラーが発生する--posix
可能性があるためです。)--re-interval
awk