2014-12-17 2 views
0

У меня есть файл, который содержит много символов. Мне нужно подсчитать, сколько раз каждый символ показан в файле (файл содержит более одного " " между каждым словом). Я понял, что лучший способ сделать это - использовать tr -s " " "/n"
, а затем используя sort. Таким образом, я могу легко использовать egerp -c для подсчета символов.Как сменить символы в файле?

Но как правильно использовать команду tr? Кажется, я не могу его использовать и поместить в переменную.

+3

Это действительно похоже на [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Приведите пример своего ввода, и какую именно информацию вы хотите извлечь из него. – Sneftel

+0

Непонятно, если вы ищете конкретное слово или ищете все слова в файле? Что есть в вашем исходном файле? – SMA

+0

Извините за недоразумение. Я должен прочитать имя файла и проверить, сколько раз каждый символ найден в файле. – Ivry345

ответ

1

Использование СЭД в режиме регулярных выражений может помочь Если я правильно понял вашу проблему

sed -r 's/(.){1}/\1\n/g' your_file.txt | sort | uniq -c 

Вы говорите СЕПГ, чтобы захватить любой символ, который появляется один раз с регулярным выражением группы ((.) {1} часть) и замените его на группу (\ 1), а затем положите \ n на одну строку. Затем вы можете использовать sort и uniq -c, чтобы сделать это для вас. Это будет включать в себя непечатаемые символы, вы можете избежать подсчета непечатаемых символов путем введения некоторых изменений в СЭД:

sed -r 's/[^[[:graph:]]]*//g;s/([[:graph:]]){1}/\1\n/g' your_file.txt | sort -n | uniq -c 

Сначала удалите непечатаемые символы и заменители печатаемые символы сам по себе плюс \ п

3

Самый простой реализации, вероятно, будет добавить \n после каждого полукокса, затем сортировать их и сосчитать их:

$ cat file 
foo bar baz. 
$ sed 's/./&\n/g' file | sort | uniq -c 
     1 
     2 
     1 . 
     2 a 
     2 b 
     1 f 
     2 o 
     1 r 
     1 z 

Вы можете, вероятно, сделать что-то подобное с Баш-х годов, как но это было бы сложно, и вы все равно не могли бы подсчитать \0 символов.

+0

хороший подход :) – tinySandy

+0

Я немного новичок в bash ... не могли бы вы объяснить строку 2? (foo bar baz.) – Ivry345

+0

@ Ivry345 Это всего лишь содержимое тестового файла ... – izabera

Смежные вопросы