Как выделить слово из строки и присвоить его переменной?
Получаю список файлов на ftp сервере в виде строки:
-rw-r--r-- 1 10473 10473 0 Oct 13 09:18 rtrt.txt
-rw-r--r-- 1 10473 10473 3091 Oct 13 09:16 test2.txt
как из него можно выделить только слова с определенным расширением, например .txt и записать их в переменную?
Файлов в выводе может быть больше и имена самых файлов неизвестны, только расширение.
Поиск grep'ом выводит всю строку , а мне нужно именно слова
Ответы (2 шт):
Как-то так, наверное:
ls -l | cut -c50-120 | tail -n +1 | grep txt
Команда tail используется для пропуска первой строки, содержащей заголовок
чтобы было удобнее работать с именами файлов, можно получать ведь не полный листинг, а только имена файлов. например, если используете программу curl, то с помощью опции
--list-only:$ curl --list-only ftp://ftp.nl.debian.org/debian/doc/ 00-INDEX FAQ bug-log-access.txt bug-log-mailserver.txt bug-mailserver-refcard.txt bug-maint-info.txt bug-maint-mailcontrol.txt bug-reporting.txt constitution.txt debian-manifesto dedication mailing-lists.txt social-contract.txt source-unpack.txtс помощью программы grep из этого списка можно отобрать только те имена, которые заканчиваются суффиксом
.txt:$ curl -s --list-only ftp://ftp.nl.debian.org/debian/doc/ | grep '\.txt$' bug-log-access.txt bug-log-mailserver.txt bug-mailserver-refcard.txt bug-maint-info.txt bug-maint-mailcontrol.txt bug-reporting.txt constitution.txt mailing-lists.txt social-contract.txt source-unpack.txtя добавил ещё опцию
-s, чтобы программа curl не формировла прогресс выполнения в stderr (что она делает, если stdout вместо терминала отправляется на stdin другой программе).grep '\.txt$'— здесь обратный слэш нужен для того, чтобы точка трактовалась как символ точки, а не как квантификатор, означающий «один любой символ». а$— это квантификатор привязки к концу строки.ну а полученный список уже можно и в переменную поместить:
$ v=$(curl -s --list-only ftp://ftp.nl.debian.org/debian/doc/ | grep '\.txt$') $ echo $v bug-log-access.txt bug-log-mailserver.txt bug-mailserver-refcard.txt bug-maint-info.txt bug-maint-mailcontrol.txt bug-reporting.txt constitution.txt mailing-lists.txt social-contract.txt source-unpack.txt