Здесь:
grep -o '[^,]\+$'
[^ ,] \ +
соответствует одному или нескольким символам, которые не являются ,
в конце строки ( $
)
-o
печатает только совпадающую часть
Пример:
% grep -o '[^,]\+$' <<<'Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value'
Great Value
Команда expect
, которую вы используете:
spawn ssh test@192.168.142.15 ls > ls_from_remotes_sys
Это, фактически, вызывает
exec("ssh","test@192.168.142.15","ls",">","ls_from_remotes_sys")
Это означает, что три параметра (ls
, >
и имя файла) посылаются удаленной системе; то есть перенаправление происходит на удаленной системе.
Вариантом kludge может быть вызов через sh -c "ssh test@...."
.
Другой альтернативой может быть перенаправление вне expect
скрипта
например: если вы назовете это "get_ls"
#!/usr/bin/expect -f
spawn ssh test@192.168.142.15 ls
expect "test@192.168.142.15's password:"
send "password\r"
interact
Тогда вы можете сделать get_ls > ls_from_remotes_sys
.