Подсчет пробелов в каталоге BASH

Приложение для Windows YUMI позволяет устанавливать несколько ISO-образов в качестве образов LiveUSB на одно USB-устройство и будет работать под WINE.

Мультисистема также дает вам эту возможность.

1
24.08.2020, 12:14
3 ответа

Попробуйте сGNU grep:

grep -ro '[[:space:]]' | wc -l
0
18.03.2021, 23:10
cd DIRPATH
res2=0
res3=0
ws=0
let " ws += `grep -rzo '[[:space:]]'. | LC_ALL=C tr -cd '\0' | wc -c` "

for f in `find. ! -type d`; 
do
let " res += `wc -l $f | awk '{print $1}'`  "
let " res2 += `wc -c $f | awk '{print $1}'`  "
let " res3 += `wc -w $f | awk '{print $1}'`  "
done

Предыдущий код дает вам количество пробельных символов в каталоге на ws var

0
18.03.2021, 23:10

Для подсчета количества символов новой строки (-l), слов (-w, которые для wcявляются последовательностями не -пробелов символов , поэтому слова разделяются либо пробелами, либо не -символов ), символов(-m)и байтов (-c), можно сделать:

find. -type f -exec cat {} + | wc -lwmc

Однако обратите внимание, что, поскольку catобъединяет файлы, это может привести к неправильным результатам для подсчета слов и символов, если есть файлы, которые не заканчиваются пробелом символ(текстовые файлы должны заканчиваться символом символ новой строки, который является символом пробела ), так как это может закончиться -объединением двух байтов в один допустимый символ, например, или объединением двух слов вместе.

Пример:

$ od -tx1 a
0000000 c3
0000001
$ od -tx1 b
0000000 a9
0000001
$ wc -m a b
0 a
0 b
0 total
$ cat a b | wc -m
1
$ printf foo > a
$ printf bar > b
$ wc -w a b
1 a
1 b
2 total
$ cat a b | wc -w
1

Для подсчета пробельных символов в соответствии с POSIX можно выполнить:

find. -type f -exec cat {} + | tr -cd '[:space:]' | wc -m

(с той же оговоркой о соединении байтов в символы ), но обратите внимание, что с GNU trэто работает только для одиночных -байтовых символов (, поэтому не кодируется UTF -8 не -Например, символы ASCII ).

В системах GNU вы можете обратиться к GNU grepи использовать:

grep -rzo '[[:space:]]'. | LC_ALL=C tr -cd '\0' | wc -c

Однако обратите внимание, что, поскольку с -z, grepработает с записями с разделителями NUL -, это в конечном итоге приведет к поглощению целых текстовых файлов в памяти (, поскольку текстовые файлы обычно не содержат байтов NUL ).

1
18.03.2021, 23:10

Теги

Похожие вопросы