Другой sed
подход, компактный, портативный и необычный:
sed 'N;/^\(.*\)\(.*\)\(\n\1\)/!P;s//\3\2/;D'
N;P;D
, чтобы всегда иметь две строки в пространстве шаблона, поэтому он начинается с N
, чтобы добавить следующую строку /^\(.*\).*\n\1/
соответствует строке, начинающейся с некоторого слова, пробела, другого слова с новой строки и повторяющегося начального слова, таким образом, две строки в буфере делят свое первое(Locus
)слово. Если это не так, (!
), P
напечатайте первую строку, потому что она полная и мы можем позже избавиться от нее с помощьюD
P
, так что теперь мне не нужно повторять его, а использовать повторно, имея пустой шаблон first second\nfirst
на \nfirst second
, поэтому в пространстве шаблонов есть пустая первая строка, за которой следует вторая строка с первым словом и все второе слово, которое у нас было до сих пор. Следующее D
теперь удалит пустую первую строку и продолжит работу с уже собранной строкой. Включив \n
в соответствие \3
, мы не нуждаемся в \n
в замене, которое не будет переносимым. Решение найдено, полное решение здесь
a )создать zfs fs
zfs create rpool/share
b )установить для обмена через smb
zfs set share=name=zfssmb1,path=/rpool/share,prot=smb,csc=auto,guestok=false rpool/share
c )установить пользователя через smbadm
smbadm enable user myuser
d )добавить клавишу
smbadm add-key -u myuser
e )отредактируйте /etc/pam.d/other и поместите эту строку в конец файла
password required pam_smb_passwd.so.1 nowarn
f )теперь самое главное, измените пароль, эта команда включает и unix, и samba pass
passwd myuser
g )теперь попробуйте, если они работают, эти команды от клиента Solaris должны выполняться нормально
smbclient \\\\solaris11.mydomain.local\\zfssmb1 -U myuser%mypass
h ), а также от клиента Linux
mount.cifs \\\\solaris11.mydomain.local\\zfssmb1 -o user=myuser,password=yourpass,vers=1.0 /mnt
smbclient \\\\solaris11.mydomain.local\\zfssmb1 -U myuser%mypass