Я видел сообщение debug1: X11 forwarding requested but DISPLAY not set
, потому что я не устанавливал переменную среды DISPLAY в оболочке перед подключением к хосту. Я использую «Bash в Windows» с openssh.
Вот что нужно сделать:
samik@mysystem:~$ export DISPLAY=localhost:0.0
samik@mysystem:~$ ssh -X samik@remotehost
Со стандартным POSIX sed это можно сделать, хотя это сложнее:
md5sum input.txt | sed -E 'h;s/^(.{4}).*$/\1/;x;s/^.{4}(.*)$/\1/;s/./x/g;H;x;s/\n//'
Вот что делает скрипт sed:
h copy the pattern buffer into the hold buffer
s/^(.{4}).*$/\1/ keep just the first four characters in the pattern buffer
x exchange the pattern buffer with the hold buffer
s/^.{4}(.*)$/\1/ keep all but the first four characters in the pattern buffer
s/./x/g replace each character with an x
H append newline and x's to hold buffer (which has the first four)
x exchange again; the pattern buffer has an extra newline, though
s/\n// remove the newline from the pattern buffer
Буфер шаблонов теперь содержит первые четыре символа плюс x для всех оставшихся символов; цикл заканчивается, и он распечатывается.
Обратите внимание, :переключатель -E включает расширенный синтаксис регулярного выражения. Здесь это не обязательно; вместо этого можно поставить обратную косую черту перед каждой открывающей и закрывающей скобкой, но я думаю, что ее достаточно сложно читать без дополнительной обратной косой черты.