Как добавить пустую строку после определенного символа в текстовом файле с помощью sed?

Попробуйте использовать что-нибудь с правильной поддержкой 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
1
25.09.2019, 23:28
2 ответа

Вместо использования \nвы можете добавить обратную косую черту \, нажать Enter и продолжить на следующей строке с помощью команды:

sed -i.bak 's/|/\
/g' inp.txt

Чтобы заменить оставшийся пробел и |в конце строки ($), используйте

sed -i.bak 's/ |$/\
/' inp.txt

Для одной замены флаг gне нужен.

1
28.04.2021, 23:29

если вертикальная черта всегда находится в конце строки, то вы можете сделать это:

$ sed -i.bak -e '/[|]$/G' -e 's///' inp.txt

А иначе, если это не так и/или в линии есть один или несколько пайпов, то делаем так:

$ sed -i.bak -e 'y/|/\n/' file.txt

, который преобразует все символы вертикальной черты в любом месте строки в символы новой строки.

0
28.04.2021, 23:29

Теги

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