Табулатура, которую вы разместили, кажется, построена из шести -длинных частей символов, -x----
, где x
— либо номер лада, либо тире. Вот так:
123456123456123456
-x-----x-----x----
|------------------|
|------------------|
|-0----------------|
|-2-----2-----2----|
|-------2----------|
|-------------0----|
Если они все с этим интервалом, вы можете просто изменить части, чтобы удалить некоторые черточки, не обращая внимания на другие строки.
$ sed -Ee 's/-(.)----/-\1/g; s/\|/-|/2' < tab
|-------|
|-------|
|-0-----|
|-2-2-2-|
|---2---|
|-----0-|
Но если у вас в одном и том же файле записаны табуляции с разными интервалами, то это становится намного сложнее, так как нам нужно будет распознавать интервалы для каждой табуляции, а вообще это невозможно сделать даже с первого раза линия. (, так как он может быть пустым, как в вашем примере.)
Решения, которые я могу придумать для более общего случая, включают в себя расшифровку всей табулатуры и последующую ее перепечатку, что не подходит для этого ответа.
Обратите внимание, что синтаксис sed /this/,/that/
обрабатывает блоки строк, где первая строка соответствует /this/
, последняя строка соответствует /that/
, а блок содержит все строки в между. Таким образом, /--/,/--/,/--/,...
является абсурдом, поскольку существует больше шаблонов, чем просто начало и конец блока.
Чтобы сопоставить блок, похожий на табулатуру, вам нужно сопоставить |-
, а затем расширить блок на шесть строк. В GNU sed для этого можно использовать /^|-/,+6
.
Поскольку вы упомянули порт 1521, я полагаю, что на вашем сервере базы данных работает Oracle. Предлагаемый способ проверить подключение к серверу Oracle — использовать tnsping.
Это синтаксис tnsping:
tnsping <service name>
, где имя службы — это запись tns в вашем файле tnsnames.ora. Конечно, у вас должен быть установлен клиент Oracle на вашей машине, на которой вы выполняете tnsping.
Утилита Ping отправляет сигналы icmp (, для которых единственным ресурсом, который я быстро нашел, был случайный форум ), который обычно отображается на tcp или udp порт 7. Чтобы проверить, открыт ли порт (не блокируется в сети ничем, в том числе брандмауэром хоста )и что порт прослушивает (что-то его использует и принимает сигналы ), нужно использовать другой инструмент.
Обычно для этого используетсяtelnet
, хотя у него гораздо больше функций.
$ telnet 192.168.1.1 80
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
^]
telnet> ^C
Обычно вы указываете telnet (имя хоста)(номер порта ). Так что для вас эта команда будет
telnet acg.com 1521
И если вы получаете информацию «Подключено к [IP-адресу]», оно подключено!
Вы также можете использовать утилиту nc
netcat. Его синтаксис очень похож, но -v для подробного описания очень полезен.
$ nc -v 192.168.1.1 80
Connection to 192.168.1.1 80 port [tcp/http] succeeded!
^C