Я использую утилиту tree
для рекурсивного показа каталогов, подобных этому:
$ tree -F -a --dirsfirst project
project
├── my_app/
│ └── __init__.py
└── tests/
├── integration/
│ ├── __init__.py
│ └── test_integration.py
└── unit/
├── __init__.py
└── test_sum.py
$ tree -F -a --dirsfirst helloworld
helloworld
├── helloworld/
│ ├── __init__.py
│ ├── helloworld.py
│ └── helpers.py
├── tests/
│ ├── helloworld_tests.py
│ └── helpers_tests.py
├── .gitignore
├── LICENSE
├── README.md
├── requirements.txt
└── setup.py
Я бы хотел передать это в sed
или awk
, чтобывнесите небольшое изменение: в конце списка любого каталога , будет вставлен символ новой строки + литерал |
:
project/
├── my_app/
│ └── __init__.py
│
└── tests/
├── integration/
| ├── __init__.py
| └── test_integration.py
|
└── unit/
├── __init__.py
└── test_sum.py
helloworld/
├── helloworld/
│ ├── __init__.py
│ ├── helloworld.py
│ └── helpers.py
│
├── tests/
│ ├── helloworld_tests.py
│ └── helpers_tests.py
│
├── .gitignore
├── LICENSE
├── README.md
├── requirements.txt
└── setup.py
Как я могу сделать эту замену?
Текущая попытка и логика: новая строка + |
вставляется после начального │
и перед начальным ├──
(необязательный пробел перед обоими):
tree -F -a --dirsfirst helloworld | sed -E 's/^\s*\│.*\n\s*\├──/???/g'
Застрял там ужасно- в 100 раз более опытный в Python re
и немного grep
, чем sed / awk.