Openoffice / Libreoffice может сделать трюк с расширением pdf-импорта и макросом с разбивкой по страницам.
Не идеальное решение, но оно работает для меня (кроме использования PDF Mod - что я бы настоятельно рекомендовал ).
Вы можете печатать каждый символ файла в отдельной строке с помощью fold -w1, затем сортировать вывод и исключать дубликаты с помощью sort -u (или sort | uniq):
$ cat test
Johnny's penguin, (Tuxie), likes the following foods: French fries, and beef.
$ fold -w1 test | sort -u
,
:
.
'
(
)
a
b
c
d
e
f
F
g
h
i
J
k
l
n
o
p
r
s
t
T
u
w
x
y
Затем вы можете снова включить это в одну строку, например, с помощью paste -sd "" -:
$ fold -w1 test | sort -u | paste -sd "" -
,:.'()abcdefFghiJklnoprstTuwxy
О, весело! Вот несколько способов. Простейший (fold) уже задан, но вот способ его расширения, чтобы дать счеты для каждого символа:
$ fold -w 1 file | LC_ALL=C sort | uniq -c
11
2 "
1 '
1 (
1 )
3 ,
1 .
1 :
1 F
1 J
1 T
1 a
1 b
2 c
2 d
9 e
4 f
2 g
4 h
5 i
1 k
3 l
7 n
6 o
1 p
2 r
4 s
1 t
2 u
1 w
1 x
1 y
Использование LC_ALL=C устанавливает языковой стандарт в C для команды sort, что означает, что КАПИТАЛЫ сортируются до нижних регистрах по вашему запросу. Чтобы получить все это на одной строке без учета вхождений, но с тем же порядком сортировки, вы можете сделать
$ echo $(fold -w 1 file | LC_ALL=C sort -u | tr -d '\n')
"'(),.:FJTabcdefghiklnoprstuwxy
Вы также можете использовать Perl:
$ perl -lne '$k{$_}++ for split(//); END{print sort keys(%k)}' file
"'(),.:FJTabcdefghiklnoprstuwxy
Наконец , это способ, который также показывает специальные символы, такие как вкладки, символы новой строки и возврат каретки:
$ echo $(od -c file | grep -oP "^\d+ +\K.*" | tr -s ' ' '\n' |
LC_ALL=C sort -u | tr -d '\n')
"'(),.:FJT\n\r\tabcdefghiklnoprstuwxy
------
|-------------> special characters
Просто удалите повторяющиеся символы из входной строки. Функция set в python создаст набор элементов без каких-либо дубликатов. т.е. set('ssss') даст вам один s.
Через python3
$ cat file
Johnny's penguin, (Tuxie), likes the following foods: French fries, and beef.
$ python3 -c 'import sys
with open(sys.argv[1]) as f:
for line in f:
print("".join(sorted(set(line))))' file
'(),.:FJTabcdefghiklnoprstuwxy
Если вы хотите удалить дубликаты символов, присутствующих в целом файле, вы можете попробовать это. [!d3 ]
$ python3 -c 'import sys
with open(sys.argv[1]) as f:
print("".join(sorted(set(f.read()))))' file