Страница 1 из 1

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

Добавлено: 2008-11-30 16:17:29
XacaH
Добрый день.
Есть текстовый файл 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
Спасибо за ответ.

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

Добавлено: 2008-11-30 16:25:25
zg
если я скажу, что find рулит, тебя ведь это не удовлетворит? :smile:

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

Добавлено: 2008-11-30 16:31:27
XacaH
Я не знаю как задать маску

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

Добавлено: 2008-11-30 16:37:01
zg

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

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

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

Добавлено: 2008-11-30 16:42:44
XacaH
эхх.. читал :)
я незнаю как пробел обозначается

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

Добавлено: 2008-11-30 16:47:56
zg
а на кой пробел?

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

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

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:

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

Добавлено: 2008-11-30 17:08:45
XacaH
Спасибо за ответы, рад что помогаете.
Представьте что это не директории я писал, а просто текст в файле, который уже есть.
И из этого файла надо вытянуть строки которые заканчиваются на 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/еще_только_одна_директория и пусто(пробел)

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

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

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

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

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

Добавлено: 2008-11-30 17:24:16
XacaH

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

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

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

Добавлено: 2008-11-30 17:26:45
Alex Keda
переместил тему раздел SHELL

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

Добавлено: 2008-11-30 17:28:07
zg
XacaH писал(а):Там ведь не пробел, а конец строки
а так?

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

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

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

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

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

Добавлено: 2008-11-30 18:15:06
Yam
А не проще ли будет без всяких промежуточных файлов?

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

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

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

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