Попробуйте использовать что-нибудь с правильной поддержкой Unicode, например Python:
$ python3 -c 'import sys; print("\n".join(sorted(set(c for l in sys.stdin.readlines() for c in l.split()))))' < bar
'
*
.
O
o
½
ɔ
Θ
۞
۩
๑
ღ
ᴗ
ᵒ
‿
⊕
⊙
◎
◕
☎
☏
☜
☞
☯
♋
♨
♬
✖
❂
❊
$ python3 -c 'import sys; print(len(set(c for l in sys.stdin.readlines() for c in l.split())))' < bar
30
Вместо использования \n
вы можете добавить обратную косую черту \
, нажать Enter и продолжить на следующей строке с помощью команды:
sed -i.bak 's/|/\
/g' inp.txt
Чтобы заменить оставшийся пробел и |
в конце строки ($
), используйте
sed -i.bak 's/ |$/\
/' inp.txt
Для одной замены флаг g
не нужен.
если вертикальная черта всегда находится в конце строки, то вы можете сделать это:
$ sed -i.bak -e '/[|]$/G' -e 's///' inp.txt
А иначе, если это не так и/или в линии есть один или несколько пайпов, то делаем так:
$ sed -i.bak -e 'y/|/\n/' file.txt
, который преобразует все символы вертикальной черты в любом месте строки в символы новой строки.