2013-11-25 8 views
1

У меня есть файл с строками, которые имеют формат: 1,4,2,3,2 и т. Д. Я хочу подсчитать количество элементов (цифр) в этой строке. Я попытался использовать команду wc, но wc -L, кажется, подсчитывает все элементы моей строки (включая запятые), а wc возвращает количество строк. Как я могу получить результат, который я хочу?подсчет количества слов в linux

ответ

2

Если вы хотите, чтобы получить количество чисел (т.е. «слов») для одной линии:

echo '1, 2, 3, 4, 5' | wc -w 

Это будет выводить 5.

Если вы хотите, чтобы получить количество для каждой строки в данном файле, вы можете сделать это в while цикле:

while read line; do echo $line | wc -w; done < your_file 

Этот выход счетчик для каждой строки в файле на новой строке (поэтому первая выходная строка соответствует первой строке в вашем файле и т. д.).

Если строки не содержат пробелов и непосредственно разделенных запятой, например 1,2,3,4,5, вы можете использовать tr заменить запятые пробелами, чтобы иметь функцию «количество слов» точно так же:

echo '1,2,3,4,5' | tr ',' ' ' | wc -w 

или

while read line; do echo $line | tr ',' ' ' | wc -w; done < your_file 
1

Использовать wc -w для подсчета слов. Существует также -c для байтов, -l для строк, -m для символов. -L - это длина самой длинной линии.

1

Снимите , перед подсчетом числа:

cat file | tr -d ',' | wc -c 

(wc -c подсчитывает количество символов в файле/потоке.)

Однако это будет работать только тогда, когда цифры все одиночные номера. Если нет, то я хотел бы использовать awk:

awk -FS',' '{c+=NF}END{print c}' file 
Смежные вопросы