Nehmen Sie einfach diesen Code als Beispiel. Wenn ich vorgeben möchte, dass es sich um eine HTML- / Textdatei handelt, wenn ich wissen möchte, wie oft insgesamt echo
angezeigt wird, wie kann ich dies mit bash tun?
new_user()
{
echo "Preparing to add a new user..."
sleep 2
adduser # run the adduser program
}
echo "1. Add user"
echo "2. Exit"
echo "Enter your choice: "
read choice
case $choice in
1) new_user # call the new_user() function
;;
*) exit
;;
esac
sed -e 's/echo//3'
Die Anzahl der Zeichenfolgenvorkommen (keine Zeilen ) kann
grep
mit den-o
Optionen undwc
(Wortanzahl) ermittelt werden:$ echo "echo 1234 echo" | grep -o echo echo echo $ echo "echo 1234 echo" | grep -o echo | wc -l 2
Die vollständige Lösung für Ihr Problem würde also folgendermaßen aussehen:
$ grep -o "echo" FILE | wc -l
quelle
-a
Ich nehme hier einige Vermutungen an, weil ich nicht ganz verstehe, was Sie fragen.
Ich denke, was Sie wollen, ist die Anzahl der Zeilen, auf denen das Muster 'Echo' in der angegebenen Datei erscheint.
Ich habe Ihren Beispieltext in eine Datei namens eingefügt
6741967
.Zuerst
grep
findet die Begegnungen:james@Brindle:tmp$grep echo 6741967 echo "Preparing to add a new user..." echo "1. Add user" echo "2. Exit" echo "Enter your choice: "
Zweitens verwenden Sie, um
wc -l
die Zeilen zu zählenjames@Brindle:tmp$grep echo 6741967 | wc -l 4
quelle
Keine der vorhandenen Antworten funktionierte für mich mit einer einzeiligen 10-GB-Datei. Grep hat selbst auf einem Computer mit 768 GB RAM nicht genügend Speicher!
$ cat /proc/meminfo | grep MemTotal MemTotal: 791236260 kB $ ls -lh test.json -rw-r--r-- 1 me all 9.2G Nov 18 15:54 test.json $ grep -o '0,0,0,0,0,0,0,0,' test.json | wc -l grep: memory exhausted 0
Also habe ich ein sehr einfaches Rust-Programm geschrieben, um es zu tun .
cargo install count_occurences
$ count_occurences '0,0,0,0,0,0,0,0,' test.json 99094198
Es ist etwas langsam (1 Minute für 10 GB), aber es geht nicht der Speicher aus!
quelle
Wenn Sie nur die Anzahl der Vorkommen angeben möchten, können Sie dies tun: $ grep -c "string_to_count" Dateiname
quelle