Возьмем этот код в качестве примера. Представив, что это HTML / текстовый файл, если я хочу узнать, сколько раз появляется echo
, как я могу сделать это с помощью bash?
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
Ни один из существующих ответов не работал на меня с однострочным 10GB файлом. В Grep заканчивается память даже на машине с 768 ГБ RAM!
$ 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
, Таким образом, я записал очень простая программа Ржавчины, чтобы сделать это .
cargo install count_occurences
$ count_occurences '0,0,0,0,0,0,0,0,' test.json
99094198
Это немного медленно (1 минута для 10 ГБ), но по крайней мере это не исчерпывает память!