/bin/bash.inner.sh &
запускает .inner.sh
как подпроцесс, но .inner.sh
по-прежнему будет частью процесса .main.sh
но если вы хотите запустить .inner.sh
как полностью отсоединенный процесс, вы можете сделать
/bin/bash.inner.sh & disown
или
nohup /bin/bash.inner.sh &
Они выполняются .inner.sh
как совершенно отдельный процесс. поэтому, даже если вы ^C
из своего .main.sh
, ваш .inner.sh
все равно будет запускать (, учитывая, что вы выполняете ^C
после того, как интерпретатор выполнил disown
илиnohup
).
grep '^\[.*\]$' file
^
соответствует началу строки \[
соответствует открывающей скобке .*
соответствует любому символу, любому количеству (ноль или более)\]
соответствует закрывающей скобке $
соответствует концу строки 1 )нет необходимости cat file
передgrep
2 )используйте более точный шаблон регулярного выражения[[^]]\+\]$
$ grep '\[[^]]\+\]$' file
[1006, 1005, 1004, 1003, 1002, 1001]
Исходный файл с более сложными входными данными:
$ cat file2
WATCHER::
[1006, 1005, 1004, 1003, 1002, 1001]
Welcome to ZooKeeper!
JLine support is disabled
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
begin [20, 25, 24, 23, 22, 21] end
begin2 [30, 35, 34, 33,
32, 31] end2
begin3 [40, 41] middle3 [50, 51, 52] end3
end of file
$
1. Простой
$ grep '\[[^]]*\]' file2
[1006, 1005, 1004, 1003, 1002, 1001]
begin [20, 25, 24, 23, 22, 21] end
begin3 [40, 41] middle3 [50, 51, 52] end3
$
2. Дополнительно
$ cat file2|grep '\[[^[]*\]'|sed 's/^[^[]*\[/[/g;s/][^]]*$/]/g;s/][^[]*\[/] [/g'
[1006, 1005, 1004, 1003, 1002, 1001]
[20, 25, 24, 23, 22, 21]
[40, 41] [50, 51, 52]
$
3. Расширенный мульти -линия
$ sed ':a;N;$!ba;s/^[^[]*\[/[/g;s/][^]]*$/]/g;s/\n//g;s/][^[]*\[/]\n[/g;' file2
[1006, 1005, 1004, 1003, 1002, 1001]
[20, 25, 24, 23, 22, 21]
[30, 35, 34, 33, 32, 31]
[40, 41]
[50, 51, 52]
$