Вытащить текст до пробела

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
XacaH
рядовой
Сообщения: 42
Зарегистрирован: 2008-11-30 16:00:18
Откуда: Kiev
Контактная информация:

Вытащить текст до пробела

Непрочитанное сообщение XacaH » 2008-11-30 16:17:29

Добрый день.
Есть текстовый файл file.txt со строками

Код: Выделить всё

/usr/ftp/hdd1/Incoming/Video/Rib
/usr/ftp/hdd1/Incoming/Video/Rib/2
/usr/ftp/hdd1/Incoming/Video/Rib/1
/usr/ftp/hdd1/Incoming/Video/Rib/1/12
/usr/ftp/hdd1/Incoming/Video/Rib/1/12/11
/usr/ftp/hdd1/Incoming/Video/Rib/1/rapala.avi
/usr/ftp/hdd1/Incoming/Video/Rib/3
/usr/ftp/hdd1/Incoming/Video/Rib/12
/usr/ftp/hdd1/Incoming/Video/Rib/4
/usr/ftp/hdd1/Incoming/Video/Rib/111
/usr/ftp/hdd1/Incoming/Video/Rib/111/122
/usr/ftp/hdd1/Incoming/Video/Rib/3333
Мне нужно вытянуть все строки и записать в такой же файт, в которых после слова Rib стоит косая и еще одно слово в конце которого пробел.
Например:

Код: Выделить всё

/usr/ftp/hdd1/Incoming/Video/Rib/2
/usr/ftp/hdd1/Incoming/Video/Rib/1
/usr/ftp/hdd1/Incoming/Video/Rib/3
/usr/ftp/hdd1/Incoming/Video/Rib/12
/usr/ftp/hdd1/Incoming/Video/Rib/4
/usr/ftp/hdd1/Incoming/Video/Rib/111
/usr/ftp/hdd1/Incoming/Video/Rib/3333
Спасибо за ответ.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Вытащить текст до пробела

Непрочитанное сообщение zg » 2008-11-30 16:25:25

если я скажу, что find рулит, тебя ведь это не удовлетворит? :smile:

XacaH
рядовой
Сообщения: 42
Зарегистрирован: 2008-11-30 16:00:18
Откуда: Kiev
Контактная информация:

Re: Вытащить текст до пробела

Непрочитанное сообщение XacaH » 2008-11-30 16:31:27

Я не знаю как задать маску

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Вытащить текст до пробела

Непрочитанное сообщение zg » 2008-11-30 16:37:01

Код: Выделить всё

man find
скажи, что нужно, подсобим :smile:

XacaH
рядовой
Сообщения: 42
Зарегистрирован: 2008-11-30 16:00:18
Откуда: Kiev
Контактная информация:

Re: Вытащить текст до пробела

Непрочитанное сообщение XacaH » 2008-11-30 16:42:44

эхх.. читал :)
я незнаю как пробел обозначается

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Вытащить текст до пробела

Непрочитанное сообщение zg » 2008-11-30 16:47:56

а на кой пробел?

ну если очень нада, то

Код: Выделить всё

find /usr/ftp/hdd1/Incoming/Video/ | grep ' '
либо

Код: Выделить всё

find /usr/ftp/hdd1/Incoming/Video/ -name '** **'

Гость
проходил мимо

Re: Вытащить текст до пробела

Непрочитанное сообщение Гость » 2008-11-30 16:56:21

XacaH писал(а):я незнаю как пробел обозначается
так и обозначается. В regexp'е еще можно использовать [:space:], но это не только пробел.
напр:

Код: Выделить всё

find . -regex '.*[[:space:]].*'
ps, я так и не понял исходной задачи :oops:

XacaH
рядовой
Сообщения: 42
Зарегистрирован: 2008-11-30 16:00:18
Откуда: Kiev
Контактная информация:

Re: Вытащить текст до пробела

Непрочитанное сообщение XacaH » 2008-11-30 17:08:45

Спасибо за ответы, рад что помогаете.
Представьте что это не директории я писал, а просто текст в файле, который уже есть.
И из этого файла надо вытянуть строки которые заканчиваются на Rib/целове_слово и в конце этого слова пробел.

Это я так по своему задачу пытаюсь решить. Полная задача это создание симлинков на динектории только, который находятся в папке Rib.
Если скрипт у меня, который вытягивает всё подряд и записывает в файл

Код: Выделить всё

#Films section

DIR1='/usr/ftp/hdd1/Incoming/Video/Rib'
#DIR2='/usr/ftp/hdd2'
#DIR3='/usr/ftp/hdd1/Incoming/Video'
#DIR4='/usr/ftp/hdd1/'
#DIR4='/usr/ftp/films8/Films4'
#DIR5='/usr/ftp/films3/Films5'
#DIR6='/usr/ftp/films3/Incoming2/!_Video/!_Films/'

LNKDIR='/usr/ftp/video/Фильмы про рыбалку'

find $DIR1 -name "*" > file_rib.txt
#find $DIR2 -name "*.avi" >> file.txt
#find $DIR3 -name "*.avi" >> file.txt
#find $DIR4 -name "*.avi" >> file.txt
#find $DIR4 -name "*.avi" >> file.txt
#find $DIR5 -name "*.avi" >> file.txt
#find $DIR6 -name "*.avi" >> file.txt

#rm $LNKDIR/*

i=0;
cat file_rib.txt |
{
while read s
do
 let "i++"
 var[$i]=$s
done
lines=${#var[*]}
for (( i=1; i<=lines; i++ ))
do
 ln -sh "${var[$i]}" "$LNKDIR/${var[$i]##*/}"
done
}
Я скрипт переделать пытался. чтобы он сказала вытаскивайл все что в директории в файл, потом из файла вот эти самый строки, которые заканчиваются на Rib/еще_только_одна_директория и пусто(пробел)

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Вытащить текст до пробела

Непрочитанное сообщение zg » 2008-11-30 17:12:46

XacaH писал(а):И из этого файла надо вытянуть строки которые заканчиваются на Rib/целове_слово и в конце этого слова пробел.
да нет проблем :smile:

Код: Выделить всё

grep -Ei 'Rib/[a-z0-9_-]+ $' /path/to/file

XacaH
рядовой
Сообщения: 42
Зарегистрирован: 2008-11-30 16:00:18
Откуда: Kiev
Контактная информация:

Re: Вытащить текст до пробела

Непрочитанное сообщение XacaH » 2008-11-30 17:24:16

Код: Выделить всё

grep -Ei 'Rib/[a-z0-9_-]+ $' /usr/admin/file_rib1.txt
Ничего не выдаёт. Похоже я ошибся :( Там ведь не пробел, а конец строки. Сорри, что морочу голову. Получается все строки которые заканчиваются на Rib/любое_выражение, после которого сразу идет конец строки.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Вытащить текст до пробела

Непрочитанное сообщение Alex Keda » 2008-11-30 17:26:45

переместил тему раздел SHELL
Убей их всех! Бог потом рассортирует...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Вытащить текст до пробела

Непрочитанное сообщение zg » 2008-11-30 17:28:07

XacaH писал(а):Там ведь не пробел, а конец строки
а так?

Код: Выделить всё

grep -Ei 'Rib/[a-z0-9_-]+$' /usr/admin/file_rib1.txt

XacaH
рядовой
Сообщения: 42
Зарегистрирован: 2008-11-30 16:00:18
Откуда: Kiev
Контактная информация:

Re: Вытащить текст до пробела

Непрочитанное сообщение XacaH » 2008-11-30 17:43:01

ДА! Спасибо большое. Это то что надо. Два дня морочился :(
Я так понял если в директориях после слова Rib/ будут проблеры или они будут русскими буквами, то они не учитываются?

Yam
сержант
Сообщения: 226
Зарегистрирован: 2008-10-11 19:19:24
Откуда: 2:5093/41

Re: Вытащить текст до пробела

Непрочитанное сообщение Yam » 2008-11-30 18:15:06

А не проще ли будет без всяких промежуточных файлов?

Код: Выделить всё

set srcdir=/dir_from lnkdir=/lnk_to && find $srcdir -type d -maxdepth 1 -mindepth 1 -exec ln -sh "{}" $lnkdir/`basename {}` \;
?

XacaH
рядовой
Сообщения: 42
Зарегистрирован: 2008-11-30 16:00:18
Откуда: Kiev
Контактная информация:

Re: Вытащить текст до пробела

Непрочитанное сообщение XacaH » 2008-11-30 20:23:23

К сожалению для меня это слишком сложно :( Я совсем начинающий в FreeBSD. Я уже реализовал тем способом. Боюсь, другим способом, чтобы понять что куда писать мне надо на пальцах обьяснять.