GNU/Linux >> Znalost Linux >  >> Linux

Grep pro řádek obsahující pouze 5 nebo 6 čísel?

Jak byste hledali řádek obsahující pouze 5 nebo 6 čísel? Něco takového.

případ 1 (má úvodní mezeru)

           10      2       12      1       13

případ 2 (bez úvodní mezery)

   1       2       3       4       5        6

Myslel jsem, že něco takového bude fungovat.

grep -E '[0-9]{5}'

Přijatá odpověď:

grep -E '[0-9]{5}' hledá čísla s alespoň 5 číslicemi. Potřebujete 5 čísel s alespoň jednou číslicí:

grep -E '[0-9]+([^0-9]+[0-9]+){4}'
  • [0-9]+ – číslo o alespoň jedné číslici
  • [^0-9]+[0-9]+ – číslo s alespoň jednou číslicí, před kterou je alespoň jeden nečíslicový znak. Poté to zopakujeme 4krát, abychom dostali 5 čísel oddělených nečíslicemi.
  • Pokud je požadavek přesně 5, možná budete chtít obklopit tento regulární výraz řetězcem [^0-9] tak, aby celá čára odpovídala (samozřejmě s kotvami).
  • Podle toho, co zde chcete (dělá 1,2,3,4,6 kvalifikovat?), můžete se podívat na jiné oddělovače. Správný vědecký zápis skutečného čísla by například vypadal takto:[+-]?(([0-9]+(.[0-9]+)?)|([0-9]?.[0-9]+))([eE][+-][0-9]+)? Oddělovače tedy nemusí obsahovat . , e , atd. Mohou být pouze mezery, jako mikeserv poznámky. Nebo možná čárky, pokud se jedná o záznam CSV. Nebo v závislosti na národním prostředí by oddělovač desetinných míst byla čárka. Změňte [^0-9] podle vašich potřeb.

Linux
  1. Hledání poslední položky v řadě pomocí Grepu?

  2. Historie Bash bez čísel řádků

  3. Jak přimět GREP, aby vybral pouze číselné hodnoty?

  1. 8 tipů pro příkazový řádek Linuxu

  2. přidat řádek do souboru POUZE pokud v souboru již není

  3. Grep:počítání počtu zápasů na řádek

  1. Linux – Jak šáhnout po konkrétním slovu a uchopit text?

  2. Jak zobrazit čísla řádků ve vi/vim?

  3. 10 praktických příkladů příkazů Grep pro vývojáře