LINUX.ORG.RU

cat ./file | grep -v «222» > ./file непонимаю поведения


0

0

имеем файл 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

то есть совершенно не так как раньше

Не дайти поехать крышей обьсните

Ответ на: комментарий от kosmonavt

О блин соори
имеем файл 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 

Иначе говоря на одно машине операция привела к одному результату на другой совершенно к другому

Не дайти поехать крышей обьсните - куда рыть 

Demimurych
() автор топика
Ответ на: комментарий от Demimurych

cat ./file | grep -v "222" > ./file

Ты открываешь файл на чтение и одновременно на запись. Здесь cat конкурирует с шеллом. Если шелл откроет файл раньше, чем cat успеет прочитать содержимое, то длина файла усекается до нуля.

kosmonavt
()

Вместо cat file | grep word используй grep word file :) Это раз

>Далее cat ./file | grep -v "222" > ./file

Этим ты стер свой файл и не понятно чему ты удивляешься? Делай так:

FIND=$(grep -v "222" file)

echo $FIND > file

Т.е. сохрани результаты поиска во временную переменную

php-coder ★★★★★
()
Ответ на: комментарий от php-coder

Я знаю что я сделал Еще раз потворяю На одной машине это стирает файл На второй помещает резулбьтат команды А это по моему неверно верно ведь ?

Demimurych
() автор топика
Ответ на: комментарий от Demimurych

Здесь неопределенная ситуация, т.к. строго не оговорено что должно произойти раньше - стирание файла или его прочтение cat'ом. Делай как сказали или пиши в другой файл

kosmonavt
()
Ответ на: комментарий от php-coder

>FIND=$(grep -v "222" file)

Потеряешь "концы" строки

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.