Ich versuche, tr mit mehreren Sätzen zu verwenden, bin mir aber nicht sicher, wie

StackOverflow https://stackoverflow.com//questions/22003685

  •  20-12-2019
  •  | 
  •  

Frage

Ich habe benutzt:

tr -dc [:alpha:] < $fileDoc | wc -c

alle Buchstaben zählen,

tr -dc ' ' < $fileDoc | wc -c

alle Leerzeichen zählen,

tr -dc '\n' < $fileDoc | wc -c

um alle neuen Zeilen in einem Textdokument zu zählen.

Was ich jetzt tun möchte, ist, alle anderen Zeichen im Dokument zu zählen, wie ich alles andere nennen werde.

Hier ist der Text aus dem Dokument:

Hallo, das ist ein Testtextdokument.

123

!@#

Gibt es eine Möglichkeit, alles zu löschen? [:alpha:], , Und \n gefunden und die restlichen Zeichen zählen?

War es hilfreich?

Lösung

Das sollte den Zweck erfüllen

tr -d '[:alpha:] \n'  < $fileDoc | wc -c

Oder vielleicht, wenn Sie Tabulatoren in die Definition von Leerzeichen einbeziehen möchten

tr -d '[:alpha:][:space:]'  < $fileDoc | wc -c

Basierend auf dem Kommentar des OP, um alphabetische Buchstaben, Leerzeichen, Ziffern und Zeilenumbrüche zu löschen und alle verbleibenden Zeichen zu zählen:

tr -d '[:alnum:][:space:]' < $fileDoc | wc -c

[:alnum:] berücksichtigt Buchstaben und Ziffern. [:space:] kümmert sich um alle Leerzeichen, einschließlich Zeilenumbrüche

Andere Tipps

Ich poste hier nur als Referenz. Wenn Sie alles auf einmal erledigen möchten, dann hier awk Das Skript sollte funktionieren:

awk -v FS='' '
{
    for(i=1; i<=NF; i++) {
        if($i ~ /[a-zA-Z]/) {alpha++};
        if($i == " ") {space++};
        if($i !~ /[A-Za-z0-9 ]/) {spl++}
    }
}
END {
    printf "Space=%s, Alphabets=%s, SplChars=%s, NewLines=%s\n", space, alpha, spl, NR
}' file

$ cat file
This is a text
I want to count
alot of $tuff
in 1 single shot

$ awk -v FS='' '
{
    for(i=1; i<=NF; i++) {
        if($i ~ /[a-zA-Z]/) {alpha++};
        if($i == " ") {space++};
        if($i !~ /[A-Za-z0-9 ]/) {spl++}
    }
}
END {
    printf "Space=%s, Alphabets=%s, SplChars=%s, NewLines=%s\n", space, alpha, spl, NR
}' file
Space=11, Alphabets=45, SplChars=1, NewLines=4
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top