Ist es möglich, wc zu verwenden, um die Zeichen jeder Zeile anstelle der Gesamtzahl der Zeichen zu zählen?
z. B.
echo -e foo\nbar\nbazz | grep -i ba
gibt zurück:
bar
bazz
Warum also nicht echo -e foo\nbar\nbazz | grep ba | wc -m
eine Liste der Längen dieser Wörter zurückgeben? (3 und 4)
Vorschläge?
P.S.:Warum werden Zeilenvorschübe mit wc -m
gezählt? ? wc -l
zählt die Zeilenumbrüche, also warum sollte wc -m
zählen sie auch?
Akzeptierte Antwort:
wc
zählt über die gesamte Datei;
Sie können awk
verwenden Zeile für Zeile verarbeiten (ohne Zeilentrennzeichen):
echo -e "foonbarnbazzn" | grep ba | awk '{print length}'
oder als awk
ist meistens eine Obermenge von grep
:
echo -e "foonbarnbazzn" | awk '/ba/ {print length}'
(Beachten Sie, dass einige awk
Implementierungen melden die Anzahl der Bytes (wie wc -c
) im Gegensatz zur Anzahl der Zeichen (wie wc -m
) und andere zählen Bytes, die nicht Teil gültiger Zeichen sind, zusätzlich zu den Zeichen (während wc -m
würde sie in den meisten Implementierungen ignorieren))