Страница 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 рулит, тебя ведь это не удовлетворит?

Re: Вытащить текст до пробела
Добавлено: 2008-11-30 16:31:27
XacaH
Я не знаю как задать маску
Re: Вытащить текст до пробела
Добавлено: 2008-11-30 16:37:01
zg
скажи, что нужно, подсобим

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:], но это не только пробел.
напр:
ps, я так и не понял исходной задачи

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/целове_слово и в конце этого слова пробел.
да нет проблем
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. Я уже реализовал тем способом. Боюсь, другим способом, чтобы понять что куда писать мне надо на пальцах обьяснять.