Řešení v Perlu:
perl -ne 'print if tr/,// > 4'
-n
přečte soubor řádek po řádku- operátor tr vrátí počet shod.
Chcete-li vytisknout řádky s méně než 4, stačí změnit >
do <
.
Pomocí grep
příkaz:
grep -E '(,.*){5}' myfile
dělá práci. Vysvětlení:
-E
:použijte rozšířený regulární výraz...
'(,.*)
:... najít jednu čárku následovanou libovolným počtem znaků, dokonce i nulou...
{5}'
:... a 5krát opakujte předchozí vzor.
Pokud chcete grepovat řádky s méně než 4 čárkami, budete potřebovat:
grep -xE '([^,]*,){0,3}[^,]*' myfile
Tentokrát potřebujeme -x
takže vzor je ukotven jak na začátku, tak na konci řádku, takže odpovídá celé čáře. A my používáme [^,]*
místo .*
protože ten by jinak šťastně odpovídal řetězcům obsahujícím ,
s jako .
odpovídá jakémukoli postava.
Dalším přístupem je obrácení pomocí -v
předchozí přístup. „Méně než 4“ je totéž jako ne "nejméně 4", takže:
grep -vE '(,.*){4}' myfile
awk
verze:
awk -F, 'NF > 5' myfile
Jak zachytit všechny disky, které nemají souborový systém
Jak fungují oprávnění k souborům pro uživatele root?