Вы пробовали Teamviewer для Linux? http://www.teamviewer.com/en/download/linux.aspx Это бесплатно для некоммерческого использования. Я использую его для своего сервера WebDAV Debian 6 без серьезных проблем и получить такой же рабочий стол, как если бы я сидел за самим Debian ...
С GNU sed:
sed ':loop /\(.*|\)\{4\}.*/ !{N; s/\n//; b loop}; s/ *| */|/g' file
Команда рассекла:
:loop
:
обозначает метку, которую мы можем использовать для ветвей. «петля» — это просто название, которое я выбрал для ярлыка.
/\(.*|\)\{4\}.*/
Является регулярным выражением селектора строк, которое соответствует строкам, содержащим 4 символа вертикальной черты, каждой из которых может предшествовать ноль или более произвольных символов (.*|
), при этом за последней вертикальной чертой может следовать ноль или более произвольных символов.
!{... }
Применяет команды в скобках к любой строке, которая не соответствует предыдущему регулярному выражению.
N; s/\n//; b loop
N
объединяет текущую строку в пространстве шаблонов с символом новой строки и следующей строкой из исходного файла, затем s/\n//
удаляет символ новой строки и b loop
выполняет возврат к метке, которую мы определили в начало, поэтому объединенная строка будет снова сравниваться с регулярным выражением.
Наконец
s/ *| */|/g
будет применяться к любой строке в пространстве шаблонов до ее вывода. Это удаляет все пробелы вокруг символов вертикальной черты.
Я предполагаю, что вам не нужны все эти пустые строки.
$ cat file
1|abc|def|ghi|
4|ijk|
|lmn|
5||opq|rst|
8|
uvw||xyz|
10|hjg|jsh|nbm|
$ awk -F'|' '{while (NF < 5) {getline nextline; $0 = $0 nextline}}1' file
1|abc|def|ghi|
4|ijk||lmn|
5||opq|rst|
8|uvw||xyz|
10|hjg|jsh|nbm|
Обновление для редактирования вопроса :удаление пробелов вокруг разделителя полей
awk -F'[[:blank:]]*[|][[:blank:]]*' -v OFS='|' '
{while (NF < 5) {getline nextline; $0 = $0 nextline}; $1=$1; print}
' file
Если можно использовать Vim:
vim -Nesc 'g!/\(.*|\)\{4\}$/j!' -cwq input.txt
-Nes
Vim запускается в режиме сценария, что упрощает автоматизацию -c...
запускает команды Vim после открытия файла g!/\(.*|\)\{4\}$/j!
-в каждой строке :g
, что не соответствует!
соответствует/\(.*|\)\{4\}$/
(регулярному выражению, соответствующему 4 каналам, разделенным ничем ), присоединяем к нему следующую строку(:j
). wq
-сохранить и выйти.