GNU/Linux >> Znalost Linux >  >> Linux

Počítání znaků každého řádku s Wc?

Je možné použít wc k počítání znaků každého řádku místo celkového počtu znaků?

např.

echo -e foo\nbar\nbazz | grep -i ba

vrátí:

bar
bazz

Proč se tedy echo -e foo\nbar\nbazz | grep ba | wc -m
vrátit seznam délek těchto slov? (3 a 4)

Návrhy?

P.S.:proč se posuny řádku počítají pomocí wc -m ? wc -l počítá nové řádky, tak proč by měl wc -m počítat je také?

Přijatá odpověď:

wc počítá přes celý soubor;
Můžete použít awk zpracovat řádek po řádku (nepočítaje oddělovač řádku):

echo -e "foonbarnbazzn" | grep ba | awk '{print length}'

nebo jako awk je většinou nadmnožinou grep :

echo -e "foonbarnbazzn" | awk '/ba/ {print length}'

(všimněte si, že některé awk implementace hlásí počet bajtů (jako wc -c ) na rozdíl od počtu znaků (např. wc -m ) a ostatní budou kromě znaků počítat bajty, které netvoří součást platných znaků (zatímco wc -m by je ve většině implementací ignoroval))


Linux
  1. Práce s rourami na příkazovém řádku Linuxu

  2. Multi-tasking na příkazovém řádku s screenie

  3. Jak zobrazit řídicí znaky (^c, ^d, ^[, …) odlišně v shellu?

  1. Přidání slova na konec řádku se Sedem?

  2. Jak mohu přidat řetězec na začátek každého řádku v souboru?

  3. Nahraďte každý znak prázdného místa na konci každého řádku '_'

  1. Seřadit pomocí řazení na příkazovém řádku

  2. Práce s datovými toky na příkazovém řádku Linuxu

  3. Manipulace s textem na příkazovém řádku pomocí sed