Да, это возможно несколькими способами, но вам понадобится сервер X Window для Windows. Некоторые варианты сервера X Windows: XManager, XMing и MobaXterm.Если у вас есть X-сервер, работающий в Windows, вы можете использовать PuTTY для подключения к вашему хосту после того, как вы установили параметры конфигурации:
Connection/SSH/X11
Enable X11 forwarding
X display location: localhost:10.0
Где 10.0 зависит от того, что слушает сервер X Window.
Когда вы настроили сервер X Window и PuTTY и вошли в систему на своем хосте, вы можете проверить переменную DISPLAY
, если установлен DISPLAY
:
$ echo $DISPLAY
localhost:10.0
Затем попробуйте что-нибудь вроде xclock
, чтобы проверить, работает ли пересылка X11:
# xclock &
Другой способ использовать X11, помимо ssh
, - это установить переменную DISPLAY
вручную, чтобы она указывала на IP-адрес, например :
# export DISPLAY=192.168.0.1:0
И посмотрите, работает ли это:
# xclock &
Таким образом X-приложения (перенаправляются) для вывода на удаленный сервер X Window.
Примечание : помните, что протокол X11 не предназначен для работы с медленными сетевыми (WAN) соединениями. Приложение X может быть ужасно медленным при использовании через медленное соединение. Рассмотрите возможность использования переключателя -C
(сжатие) с ssh
, чтобы использовать сжатие в сеансе ssh
, чтобы немного ускорить его.
Если файл достаточно мал и не помещается в памяти, вы можете удалить файл с помощью perl
и удалить все символы новой строки, которые идут после символа пробела, отличного от -, и еще одной новой строки:
$ perl -0pe 's/(\S\n)\n/$1/g' file
this is testing 1
this is testing 2
this is testing 4
С помощью Awk вы можете установить разделитель записей на двойную -новую строку, а затем печатать каждую запись с разделителем выходных записей с одинарной новой строкой по умолчанию.
С POSIX Awk это приведет к появлению дополнительной новой строки после последней записи -если у вас есть GNU Awk(gawk
)вы можете предотвратить это, установив пустой разделитель выходных записей, если фактический разделитель входных записей пуст:
$ gawk -vRS='\n\n' 'RT=="" {ORS=""} 1' file.txt
this is testing 1
this is testing 2
this is testing 4
awk 'BEGIN {prev_empty = "TRUE"}; {if (/^$/) {if (prev_empty) {print}; prev_empty = "TRUE"} else {prev_empty = ""; print}}' file.txt
BEGIN {prev_empty = "TRUE"}
:начните с инициализации переменной prev_empty
значением TRUE
. if (/^$/)
:проверить, пуста ли строка (т.е. соответствует регулярному выражению/^$/
). {if (prev_empty == "TRUE") {print}; prev_empty = "TRUE"}
:если предыдущая строка была пустой, то вывести ее, иначе не печатать (т.е. удалить ее ). Затем установите переменную prev_empty
в TRUE
. {prev_empty = ""; print}
:установите для переменной prev_empty
значение null и напечатайте строку. Логика такова, что почти во всех ситуациях выводить текущую строку. Однако не печатает текущую строку, если текущая строка пуста (соответствует /^$/
), а предыдущая строка не была -пустой (, т.е.prev_empty = ""
).
$ awk '{ print; if (length) getline }' file
this is testing 1
this is testing 2
this is testing 4
Это печатает результат и читает за пустой строкой после него, если результат имел какое-либо содержимое. Для пустых результатов никакая дополнительная строка не пропускается.
Это приведет к печати нескольких последовательных пустых строк, только если имеется несколько последовательных пустых результатов. Вывод будет иметь ровно одну строку на результат (пустой или нет):
$ cat file
this is testing 1
this is testing 2
this is testing 5
$ awk '{ print; if (length) getline }' file
this is testing 1
this is testing 2
this is testing 5
Это удалит новую строку, только если после некоторого символа (только первая новая строка после строки с текстом):
sed -n '$!N;s/\(.\)\n/\1/;P;D' file