SED - Сохранение новой строки при записи в новый файл

Если вы используете tree -r , затем переверните все строки, например, используя tac , и преобразуйте прямоугольные символы, это выглядит разумным :

#!/bin/sh
tree --dirsfirst -r | tac | sed -e 's/\d226\d148\d148/\d226\d148\d140/'

# 0x2514 is lower-left-corner,
# 0x250c is upper-left-corner
# 0x2514: 9492 022424 0x2514 text "%\024" utf8 \342\224\224
# 0x250c: 9484 022414 0x250c text "%\014" utf8 \342\224\214

Я получил значение Unicode, используя идентификатор символа в vi-like-emacs , и эквивалент UTF-8, используя мою утилиту hex .

Вот конец моего каталога / etc , чтобы проиллюстрировать:

├── xdg
│   ┌── catalog
│   ├── catalog.old
│   ├── docbook-xml.xml
│   ├── docbook-xml.xml.old
│   ├── docbook-xsl.xml
│   ├── docbook-xsl.xml.old
│   ├── rarian-compat.xml
│   ├── sgml-data.xml
│   ├── sgml-data.xml.old
│   ├── xml-core.xml
│   ├── xml-core.xml.old
│   │   ┌── CatalogManager.properties
│   ├── resolver
├── xml
│   ┌── includes
│   ├── xpdfrc
├── xpdf
│   ┌── newuser.zshrc.recommended
│   ├── zlogin
│   ├── zlogout
│   ├── zprofile
│   ├── zshenv
│   ├── zshrc
├── zsh
.

Для справки:

Таблица кодировки UTF-8 и страница символов Unicode с кодовыми точками U + 2500 в U + 25FF

0
09.08.2018, 11:55
2 ответа

Тут вроде можно сделать:

tr -cd '0-9:_.,\r\n' < file.in > file.out

Чтобы удалить все символы, кроме тех, которые вы хотите сохранить, включая разделители строк в любом формате, в котором они были изначально.

0
28.01.2020, 04:15

Почему бы вам не избавиться от trи не включить его в команду sed:

sed 's/\(^\|^M\)[^0-9:_.,]*/\n/g; s/^\n//' file

Может быть немного сложно включить управляющие символы (^M, \r, 0x0D )и (\n, 0x0A )в скрипт sed, в зависимости от вашей ОС и sedверсии.

0
28.01.2020, 04:15

Теги

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