Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: qwert в Jun 21, 2007, 17:38



Титла: Странности в bash
Публикувано от: qwert в Jun 21, 2007, 17:38
Не съм сигурен дали темата е за тук...
Имам следният прост скрипт:

for i in `cat file1`;do
    cat ./file2|grep -v "$i\b" > ./file2
done

file1 съдържа следните редове:
192.168.1.2
192.168.1.2
192.168.1.2
и така същото ИП 17реда

file2 съдържа следните редове:
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5

След изпълнението на скрипта file2 съдържа всички ИП-та без 192.168.1.2 до тук добре няма проблем но сложа ли още няколко реда с ИП-та в file1 по точно станат ли редовете повече от 17 след изпълнението на скрипта file2 остава празен.Направо не е за вярване...

GNU bash, version 3.1.17

Ще съм благодарен на всякакви подсказки.

Пробвах го на още две машини едната с bash 2.05 file2 остава празен дори над два реда с ИП-та попълнени в file1..





Титла: Странности в bash
Публикувано от: VladSun в Jun 21, 2007, 17:46
Ми ... както е разисквано тук - така не трябва да се прави :)

В смисъл - правиш cat и промяна на един и същ файл по едно и също време:
cat ./file2|grep -v "$i\b" > ./file2

би трябвало да правиш нещо такова:

cat ./file2|grep -v "$i\b" > ./file3
mv ./file3 ./file2


Титла: Странности в bash
Публикувано от: neter в Jun 21, 2007, 18:52
Броя не е закотвен на 17. При мен и на 200 успява да се справи. Но както каза VladSun... не е хубаво едновременно да изпълняваш две неща върху един файл. Междудругото... защо са ти толкова повтарящи се IP-та във file1, при положение че и едно върши работа? Не за друго, просто ми е интересно къде се налага това.





Титла: Странности в bash
Публикувано от: qwert в Jun 22, 2007, 10:39
Първо искам да благодаря за бързия отговор на VladSun който всъщност ми отвори очите.
А в отговор на neter ще кажа че това е просто пример и не върши никаква работа в случая.
Поздрави...