cat ./file | grep -v "222" > ./file непонимаю
Модератор: Модераторы разделов
-
Demimurych
- Сообщения: 295
cat ./file | grep -v "222" > ./file непонимаю
имеем файл file
cat ./file
111
222
333
Далее Делаем
cat ./file | grep -v "222"
111
333
Далее
cat ./file | grep -v "222" > ./file
cat ./file
Ответ пусто в файле ничего нет
ежели опять создать файл с тем же содрежимым и сделать так
cat ./file | grep -v "222" > ./file2
cat ./file2
111
333
то есть вроде бы верно
Берем другую машину
Делаем
cat ./file | grep -v "222" > ./file
сat ./file
111
333
Иначе говоря на одно машине операция привела к одному результату на другой совершенно к другому
Не дайти поехать крышей обьсните - куда рыть
cat ./file
111
222
333
Далее Делаем
cat ./file | grep -v "222"
111
333
Далее
cat ./file | grep -v "222" > ./file
cat ./file
Ответ пусто в файле ничего нет
ежели опять создать файл с тем же содрежимым и сделать так
cat ./file | grep -v "222" > ./file2
cat ./file2
111
333
то есть вроде бы верно
Берем другую машину
Делаем
cat ./file | grep -v "222" > ./file
сat ./file
111
333
Иначе говоря на одно машине операция привела к одному результату на другой совершенно к другому
Не дайти поехать крышей обьсните - куда рыть
-
t.t
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: cat ./file | grep -v "222" > ./file непонимаю
Для начала в строну grep -V(Demimurych @ Вторник, 12 Апреля 2005, 12:18) писал(а):Иначе говоря на одно машине операция привела к одному результату на другой совершенно к другому
Не дайти поехать крышей обьсните - куда рыть
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
Demimurych
- Сообщения: 295
Re: cat ./file | grep -v "222" > ./file непонимаю
Не годитсья
потому как во первых одни и таже ОС
Во творых
перд всеми операциями делаю проверку
cat ./file | grep -v "222"
п после потовряю
cat ./file | grep -v "222" > ./file
На одной машине получю один результат на вторйо второй
-
t.t
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: cat ./file | grep -v "222" > ./file непонимаю
Так вы уверены, что версии грепа совпадают?(Demimurych @ Вторник, 12 Апреля 2005, 12:33) писал(а):Не годитсья
потому как во первых одни и таже ОС
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
bogus
- Сообщения: 160
Re: cat ./file | grep -v "222" > ./file непонимаю
Греп тут более-менее непричем, по-моему.
cat file | sed > file тоже дает непредсказуемый результат.
Насколько я понял, даже cat file | grep > another_file может давать непредсказуемый результат в некоторых случаях...
cat file | sed > file тоже дает непредсказуемый результат.
Насколько я понял, даже cat file | grep > another_file может давать непредсказуемый результат в некоторых случаях...
Как всякое несовершенное существо я могу ошибаться. Простите меня.
jabberId = foldl (flip (:)) [] "ur.rebbaj@43sugob"
jabberId = foldl (flip (:)) [] "ur.rebbaj@43sugob"
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: cat ./file | grep -v "222" > ./file непонимаю
по логике, от grep никак не зависит. возможно, от shell'а? от используемой fs? ведь при команде
cat ./file | grep ... > ./file
shell сначала должен произвести "усекновение" file'а.
почему этого не происходит во втором случае - великая загадка есть :)
cat ./file | grep ... > ./file
shell сначала должен произвести "усекновение" file'а.
почему этого не происходит во втором случае - великая загадка есть :)
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
t.t
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: cat ./file | grep -v "222" > ./file непонимаю
Хм.. Логично. Что-то я сегодня плохо соображаю. Вообще-то, конечно, конвейеризация на такие варианты не расчитана.(Sash Kan @ Вторник, 12 Апреля 2005, 13:59) писал(а):по логике, от grep никак не зависит.
А вот это почему?(bogus @ Вторник, 12 Апреля 2005, 13:50) писал(а):Насколько я понял, даже cat file | grep > another_file может давать непредсказуемый результат в некоторых случаях...
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
JaGoTerr
- Сообщения: 380
Re: cat ./file | grep -v "222" > ./file непонимаю
Да ну вы что, господа, при чём же тут grep. Смешно даже. Причина ВОЗМОЖНО в оболочке. Вплоть до её версии, а также режима запуска (возможно где-то она запущена как login-shell, следовательно в режиме совместимости с sh/csh, а где-то нет). От ФС... ну фиг знает... не исключено.
Я вот только что проверил на:
Линукс + reiserfs 3:
bash 3.00.15, tcsh 6.13.00, zsh 4.2.1 - результат нормальный (на выходе file1 непуст).
Соляра 9 + ufs ( а что же ещё
):
tcsh 6.10.00, bash 2.05.0 - результат хреновый (file1 пуст).
То бишь... сравнение несколько косоватое, ибо нет идеального совпадения версий оболочек, чтобы можно было говорить о бесспорном влиянии типа ФС на процесс, но тем не менее... имхо, ФС тут более чем при чём.
Я вот только что проверил на:
Линукс + reiserfs 3:
bash 3.00.15, tcsh 6.13.00, zsh 4.2.1 - результат нормальный (на выходе file1 непуст).
Соляра 9 + ufs ( а что же ещё
tcsh 6.10.00, bash 2.05.0 - результат хреновый (file1 пуст).
То бишь... сравнение несколько косоватое, ибо нет идеального совпадения версий оболочек, чтобы можно было говорить о бесспорном влиянии типа ФС на процесс, но тем не менее... имхо, ФС тут более чем при чём.
-
bogus
- Сообщения: 160
Re: cat ./file | grep -v "222" > ./file непонимаю
Точно не разбирался, т.к. у меня это работает нормально. могу лишь процитировать из bbs.archlinux.org:
I'd recommend changing your sed line in your PKGBUILD. I ran into a nasty race condition on a HT system with a PKGBUILD that did something like what you've got. Rather than 'cat | sed > output', just use sed with the -i argument and copy the file over
этот комментарий относился к строке
Код: Выделить всё
cat $startdir/system.mk | sed "s#ROOT=DUMMY#ROOT=$startdir/pkg#" > $startdir/src/ion-3ds-$pkgver/system.mkbogus добавил в 12.04.2005 15:36
правда, возможно это относится именно к sed'у...
Как всякое несовершенное существо я могу ошибаться. Простите меня.
jabberId = foldl (flip (:)) [] "ur.rebbaj@43sugob"
jabberId = foldl (flip (:)) [] "ur.rebbaj@43sugob"
-
Demimurych
- Сообщения: 295
Re: cat ./file | grep -v "222" > ./file непонимаю
повторяю.
Две совершенно одинаковые системы.
Разница небольшая в железе
Две совершенно одинаковые системы.
Разница небольшая в железе
-
JaGoTerr
- Сообщения: 380
Re: cat ./file | grep -v "222" > ./file непонимаю
(Demimurych @ Вторник, 12 Апреля 2005, 15:58) писал(а):повторяю.
Две совершенно одинаковые системы.
Разница небольшая в железе
Если системы одинаковые, а ведут себя по-разному, значит они неодинаковые.
Значит ты не всё проверил или не всё о них знаешь (а всё о них никто не знает).
-
madskull
- Сообщения: 1019
- Статус: Экс-металлюга
Re: cat ./file | grep -v "222" > ./file непонимаю
А насколько "одинаковые" системы? Может, размер памяти разный, может, буфера забиты/сброшены. А может дождь за окном?
Короче, и на одной системе в разное время можно получить разные результаты. Почему? Не знаю.
Но зависимость размера файла от вероятности его потери - прямо пропорциональна.
В общем, не делайте так
Иногда, при больших файлах, бывает, что записывается только часть исходного содержимого...
Короче, и на одной системе в разное время можно получить разные результаты. Почему? Не знаю.
Но зависимость размера файла от вероятности его потери - прямо пропорциональна.
В общем, не делайте так
Иногда, при больших файлах, бывает, что записывается только часть исходного содержимого...
ArchLinux / IceWM
-
rulix
- Сообщения: 31
Re: cat ./file | grep -v "222" > ./file непонимаю
Команда ">" обнуляет файл, в который перенаправляется вывод. Если из file перенаправлять в file, то он будет пустой.
-
xorader
- Сообщения: 1030
- Статус: собирающий миры
- ОС: Debian
Re: cat ./file | grep -v "222" > ./file непонимаю
:megalol: :megalol: :megalol: :megalol:
потестируй просто cat file > file
Совет: не используй такую реализацию никогда! Реализации оболочек разные: некторые сначала открывают новый file (соотв-о inode и данные старые удаляются - файл пустой), некоторые сначала старый файл открывают (в результате с данными всё впорядке, так как дескриптор открыт и данные сохраняются пока он существует).
P.S. знаете зачем бегемоту большие круглые ступни ?
потестируй просто cat file > file
Совет: не используй такую реализацию никогда! Реализации оболочек разные: некторые сначала открывают новый file (соотв-о inode и данные старые удаляются - файл пустой), некоторые сначала старый файл открывают (в результате с данными всё впорядке, так как дескриптор открыт и данные сохраняются пока он существует).
P.S. знаете зачем бегемоту большие круглые ступни ?
Molchanov Alexander (aka Xor)
*offtopic* - ololo!
*offtopic* - ololo!
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: cat ./file | grep -v "222" > ./file непонимаю
Для JaGoTerr: поведение, когда при записи через ">" файл не усекается _до_ начала работы конвейера - как раз _ненормальное_
Sash Kan добавил в 12.04.2005 19:09
и cat одной версии?
Sash Kan добавил в 12.04.2005 19:14
только что проверил на трех _совершенно_ разных машин (разные ядра, shell-ы, версии cat).
везде поведение _нормальное_. file - пуст.
проверил еще на одной (freebsd 4.8, больше ничего узнать не удалось) - поведение _ненормальное_.
Sash Kan добавил в 12.04.2005 19:09
(Demimurych @ Вторник, 12 Апреля 2005, 15:58) писал(а):повторяю.
Две совершенно одинаковые системы.
Разница небольшая в железе
и cat одной версии?
Sash Kan добавил в 12.04.2005 19:14
только что проверил на трех _совершенно_ разных машин (разные ядра, shell-ы, версии cat).
везде поведение _нормальное_. file - пуст.
проверил еще на одной (freebsd 4.8, больше ничего узнать не удалось) - поведение _ненормальное_.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
madskull
- Сообщения: 1019
- Статус: Экс-металлюга
Re: cat ./file | grep -v "222" > ./file непонимаю
(xorader @ Вторник, 12 Апреля 2005, 16:59) писал(а):P.S. знаете зачем бегемоту большие круглые ступни ?
Ну, не томи...
ArchLinux / IceWM
-
nercus
- Сообщения: 150
Re: cat ./file | grep -v "222" > ./file непонимаю
The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition
Стандарт аднака.
2. Shell Command Language
......
2.7.2 Redirecting Output
......
If the file does not exist, it shall be created; otherwise, it shall be truncated to be an empty file after being opened.
Стандарт аднака.
2.6.14-gentoo-r5
kde-3.5.0 | openbox-3.2
Deep Purple | Rob Zombie | Led Zeppelin | ДДТ
kde-3.5.0 | openbox-3.2
Deep Purple | Rob Zombie | Led Zeppelin | ДДТ
-
t.t
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: cat ./file | grep -v "222" > ./file непонимаю
Чтобы не проваливаться в маленькие квадратные ямы. Я ещё пару таких загадок знаю. Давать?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
JaGoTerr
- Сообщения: 380
Re: cat ./file | grep -v "222" > ./file непонимаю
(Sash Kan @ Вторник, 12 Апреля 2005, 18:14) писал(а):Для JaGoTerr: поведение, когда при записи через ">" файл не усекается _до_ начала работы конвейера - как раз _ненормальное_
Под "нормальный" в данном случае понималось скорее "желаемый" или как-то так. В общем, не придирайся к словам
(Sash Kan @ Вторник, 12 Апреля 2005, 18:14) писал(а):только что проверил на трех _совершенно_ разных машин (разные ядра, shell-ы, версии cat).
везде поведение _нормальное_. file - пуст.
проверил еще на одной (freebsd 4.8, больше ничего узнать не удалось) - поведение _ненормальное_.
Вот я проверил - так из моего поста сразу это видно. Ибо написано на чём, как и каковы результаты. А фраза "проверил, везде вот эдак", честно говоря, не внушает доверия. Хотелось бы фактов! :yes:
-
xorader
- Сообщения: 1030
- Статус: собирающий миры
- ОС: Debian
Re: cat ./file | grep -v "222" > ./file непонимаю
(t.t @ Среда, 13 Апреля 2005, 11:59) писал(а):Чтобы не проваливаться в маленькие квадратные ямы. Я ещё пару таких загадок знаю. Давать?
Не угадал.. "что бы с кувшинки на кувшинку грациозно так *шлёп-шлёп*"
Molchanov Alexander (aka Xor)
*offtopic* - ololo!
*offtopic* - ololo!
-
t.t
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: cat ./file | grep -v "222" > ./file непонимаю
Тоже вариант(xorader @ Среда, 13 Апреля 2005, 12:58) писал(а):Не угадал.. "что бы с кувшинки на кувшинку грациозно так *шлёп-шлёп*"
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: cat ./file | grep -v "222" > ./file непонимаю
(JaGoTerr @ Среда, 13 Апреля 2005, 12:23) писал(а):Под "нормальный" в данном случае понималось скорее "желаемый" или как-то так. В общем, не придирайся к словам ;)
больше не буду :)
(JaGoTerr @ Среда, 13 Апреля 2005, 12:23) писал(а):Вот я проверил - так из моего поста сразу это видно. Ибо написано на чём, как и каковы результаты. А фраза "проверил, везде вот эдак", честно говоря, не внушает доверия. Хотелось бы фактов! :yes:
подробный сбор фактов открыл новые горизонты:
нормально себя ведут:
bash version 2.05b.0(1) под fc1 и debian sarge (каюсь - написал, что разные версии, на поверку оказалась одна)
zsh 4.0.7 под fc1 (вообще выдал ошибку zsh: file exists: file)
ash (неизвестной версии, на -v и --version не реагирует) из leaf bering uclibc
ненормально ведут себя:
tcsh 6.12.00 под fc1
tcsh 6.13.00 под debian sarge
zsh 4.2.1 под debian sarge
другие shell'ы тестировать было лень. думаю, и этого хватит с головой.
вот такие получаются пироги с котятами.
ау! стандарты! где вы!? молчат :))
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
nercus
- Сообщения: 150
Re: cat ./file | grep -v "222" > ./file непонимаю
ну я же дал ссылку на стандарт, на posix, где описано, как себя шелл ведет при redirection. чем не устраивает?
2.6.14-gentoo-r5
kde-3.5.0 | openbox-3.2
Deep Purple | Rob Zombie | Led Zeppelin | ДДТ
kde-3.5.0 | openbox-3.2
Deep Purple | Rob Zombie | Led Zeppelin | ДДТ
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: cat ./file | grep -v "222" > ./file непонимаю
дык я эта, про эта самое. про стандарты, которые кто-то кое-где у нас порой не очень-то соблюдает.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
ddc
- Бывший модератор
- Сообщения: 3535
- Статус: OpenBSD-compatible
- ОС: OpenBSD -current
Re: cat ./file | grep -v "222" > ./file непонимаю
Для Sash Kan:
Ну это как всегда, пока не на все стандарты клал - не мужчина.
Кстати, может кто в курсе, Linux собирается становиться UNIX2000-compatible?
Ну это как всегда, пока не на все стандарты клал - не мужчина.
Кстати, может кто в курсе, Linux собирается становиться UNIX2000-compatible?
-
Golden
- Сообщения: 163
- ОС: Ubuntu Linux 7.10
Re: cat ./file | grep -v "222" > ./file непонимаю
(czarker @ Среда, 13 Апреля 2005, 20:03) писал(а):Кстати, может кто в курсе, Linux собирается становиться UNIX2000-compatible?
Можно подробнее? А то гугль дал такие разнообразные ссылки, что трудно сразу найти первоисточник
-
alphex_kaanoken
- Сообщения: 30
Re: cat ./file | grep -v "222" > ./file непонимаю
по логике результат с один и тем же файлом не предсказуем
то есть когда
cat file | grep "foo" > file
ты открываешь поток - через pipe прогоняешь его и в тот же поток пихаешь, логикой думать надо - что будет если cat файл не закрыл а вывод уже сделан в файл - как там насчет позиционирования текущего в файле?
поэтому корректней - будет везде работать
cat file | grep "foo" > file_tmp && mv file_temp file
если тебе надо тоже имя сохранить.
От фс и железа в твоем случае ну никак не зависит.
alphex_kaanoken добавил в 15.04.2005 00:30
2rulix - это верно, но опять думаем - сделай >> что будет ?
и корректнее сказать не "обнуляет" а открывает файл только на запись.
то есть когда
cat file | grep "foo" > file
ты открываешь поток - через pipe прогоняешь его и в тот же поток пихаешь, логикой думать надо - что будет если cat файл не закрыл а вывод уже сделан в файл - как там насчет позиционирования текущего в файле?
поэтому корректней - будет везде работать
cat file | grep "foo" > file_tmp && mv file_temp file
если тебе надо тоже имя сохранить.
От фс и железа в твоем случае ну никак не зависит.
alphex_kaanoken добавил в 15.04.2005 00:30
2rulix - это верно, но опять думаем - сделай >> что будет ?
и корректнее сказать не "обнуляет" а открывает файл только на запись.
Don't try to look deeper, just look deeper than deep. ©
-
ddc
- Бывший модератор
- Сообщения: 3535
- Статус: OpenBSD-compatible
- ОС: OpenBSD -current
Re: cat ./file | grep -v "222" > ./file непонимаю
Для Golden:
Спецификация такая была, сейчас только AIX признана соответвующей ей. Подробней не знаю.
Спецификация такая была, сейчас только AIX признана соответвующей ей. Подробней не знаю.
-
t.t
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: cat ./file | grep -v "222" > ./file непонимаю
Да я посмотрю, вы (уж простите) -- придираст...(alphex_kaanoken @ Четверг, 14 Апреля 2005, 23:30) писал(а):и корректнее сказать не "обнуляет" а открывает файл только на запись.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
alphex_kaanoken
- Сообщения: 30
Re: cat ./file | grep -v "222" > ./file непонимаю
нет я просто люблю когда все нзывают своими именами =)
и не придирка это а дотошность.
а про mm в другом посте я не стал расписывать, так как это тема вообще отдельная и одним примечанием в мане не ограничивается.
Могу завести дискуссию - по поводу различных реализаций и как и в каких случаях правлиьней делать.
Я не кричу кстати что умнее всех - в одном я меньше знаю в другом больше - понять думаю это не сложно ?
и не придирка это а дотошность.
а про mm в другом посте я не стал расписывать, так как это тема вообще отдельная и одним примечанием в мане не ограничивается.
Могу завести дискуссию - по поводу различных реализаций и как и в каких случаях правлиьней делать.
Я не кричу кстати что умнее всех - в одном я меньше знаю в другом больше - понять думаю это не сложно ?
Don't try to look deeper, just look deeper than deep. ©