Вот хак, который может делать то, что вы хотите:
nc -l 12345 & NC_PID=$! ; sleep 3; if [ `netstat -ant | grep ':12345 .*ESTABLISHED'` -eq 0 ]; then kill -9 $NC_PID; fi
Он запускает сервер, засыпает в течение всего времени ожидания, а затем убивает netcat, если нет установленное соединение. Существует небольшой риск зависания сервера, если существует существующее соединение, в котором удаленный порт соответствует вашему слушателю, но это было бы неудачей.
Примечание: я тестировал это на CentOS Linux, поэтому код не является полностью переносимым, но идея должна быть реализована на любой машине * nix.
Как насчет
sed '$!N; s/\n\([[:alpha:]]\{4,\}\)/ \1/; P;D' file
Q1bcd 3 - 4 --- --- --- Ba Klasse hat Aufgab..
8 a 3 --- --- Mr
6 b 3 - 4 --- --- --- Bu Unterricht im Klassenverband
8 a 4 --- --- Ke
7 a 4 De Bi r24 La
В perl
, если входной файл достаточно мал, чтобы поместиться в памяти:
perl -0777 -pe 's/\n([a-zA-Z]{4})/ $1/g' file.txt
Это неуклюже; может быть способ получше
awk '{ c=""; if (NR!=1 && !/^[a-zA-Z]{4}/) { c="\n" }; printf("%s%s",c,$0) } END { print "" }'
В принципе, для каждой строки мы печатаем ее без символа LF. Затем мы можем префикс следующей строки с помощью LF, если мы не хотим объединять эту строку.
Наконец, это будет означать, что в последней строке отсутствует последний LF, поэтому мы добавляем это.