Я бы предложилawk
обработку (, которая, как мне кажется, будет более гибкой и надежной):
awk '/^\* i/ && ++c == 2{ print r ORS; r=""; c=0 }
{ r=(r? r ORS:"")$0 }
END{ print r }' file
Выход:
* misc: go to the park
with your dog
* important: sell badges
the bigger the pricier
24 left right now
* important: go to the mall
get clothes
* important: finish homework
Для вашего текущего простого случая (без дополнительной логики)-его можно сократить до следующего:
awk '/^\* i/ && ++c == 2{ print "" }1' file
Чтобы извлечь нужную часть отдельно -по-прежнему одной командой awk
, но с использованием динамического аргумента part
, который принимает условное значение либо1
(1-й раздел, предшествующий раздел ), либо2
(2-й раздел, следующий раздел ).
Схема:
awk -v part=[12] '/^\* i/ && ++c == 2{ if (part == 1) exit; else f=1 }
part == 1 || (part == 2 && f)' FILE
Использование:
--печать "до" раздел:
$ awk -v part=1 '/^\* i/ && ++c==2{ if (part==1) exit; else f=1 }
> part==1 || (part==2 && f)' file
* misc: go to the park
with your dog
* important: sell badges
the bigger the pricier
24 left right now
--печать "после" раздел:
$ awk -v part=2 '/^\* i/ && ++c==2{ if (part==1) exit; else f=1 }
> part==1 || (part==2 && f)' file
* important: go to the mall
get clothes
* important: finish homework
если вы ~/ip.txt может содержать
hostname 1.2.3.4
тогда можно
include ~/ip.txt
в соответствующем месте файла ~/.ssh/config.
IIUC, вы можете использовать ProxyCommand
вот так:
Host test
Port 12345
ProxyCommand ssh -p %p "$(cat ~/ip.txt)" nc localhost %p
StrictHostKeyChecking no