|
TwojePC.pl © 2001 - 2025
|
 |
A R C H I W A L N A W I A D O M O Ś Ć |
 |
| |
|
wykasowanie 2 wierszy z dużej ilości plików , DmK 29/08/07 18:34 Potrzebuję znaleźć sposób aby wykasować 2 pierwsze wiersze z dużej ilości plików tak aby wiersz 3 i reszta przeniosła się do początku pliku (czyli wiersz 3 będzie wierszem 1). Jednocześnie 2 pierwsze wiersze są w każdym pliku takie same. Plik jest w formacie "notatnikowym". Muszę mieć również gwarancje że nic nie zostanie dopisane. Ktoś ma na to jakiś pomysł? Będę wdzięczny.- hmm , waski 29/08/07 18:44
Program w awk wygladalby tak:
NR < 3 {;}
Takze jesli chcesz to mozesz odpalic gawk w jakims skrypcie dla wszystkich plikow i juz...SNAFU
Situation Normal, All Fucked Up - albo jescze latwiej , waski 29/08/07 18:47
cat -n 3SNAFU
Situation Normal, All Fucked Up - .... , DmK 29/08/07 19:16
sorry ale nie zrozumiałem...
- tcsh + sed , DrLamok 29/08/07 19:23
foreach file (*txt)
sed '1,2d' $file > tt
mv tt $file
end
-- - heh , DmK 29/08/07 19:47
ok. niestety rady idą w stronę w której o wiele więcej informacji bym potrzebował... ale sprawdzam co to jest awk i to tcsh + sed :)- To napisz coś więcej... , Umek 29/08/07 22:44
chcesz kod do jakiegoś języka programowania?
Te 2 wiersze są unikalne? Program robiący replace tekstu wsadowo wystarczy?
Tych plików masz miliardy, a każdy ma po 19GB wielkości, długości wierszy mają po kilka MB wielkości?
Robisz to raz czy będziesz cyklicznie (jakiś automat).
Więcej danych się podaje...
Pozdr.- więc tak jak napisałem , DmK 29/08/07 22:52
chce coś "prostego" co nie wiąże się z programowaniem. Plików jest 200. Tak ja napisałem wiersze są w każdym pliku takie same (te 2 do usunięcia) i w całym pliku nigdy się nie powtarzają - wiersze powstają przy generacji na podstawie procedury. Plik ma od 300 kb do 6 MB, Wystarczy mi coś co zrobi to tak że wywali te 2 pierwsze wersji i przesunie resztę do góry. A i operacji ta będzie powtarzalna ale zawsze będzie chodził o to żeby wywalić pewien ciąg znaków z 2 pierwszych linii i ten ciąg znaków wszystkich plikach będzie taki sam.- tak ponad rok temu , JOTEM 30/08/07 00:27
napisałem z nudów komuś podobne narzędzie:
jotem.magma-net.pl/rozne/multirep.zip
Umieść wszystkie pliki w jednym katalogu, otwórz dowolny z nich, wpisz w miejsce ciągu do wyszukania pierwsza linię i uruchom, powtórz z drugą.
Uwaga, zamienia "w miejscu" nie robi kopii !Poryjemy..zrobaczymy - zrób dokładnie to co napisał DrLamok , kicior 30/08/07 00:35
jeśli chcesz to samo w wersji dla bash-a robisz tak:
wchodzisz do katalogu gdzie masz te pliki(tu zakładamy, że mają rozszerzenie .txt) i piszesz:
for i in $(ls *.txt) ; do sed '1,2d' $i > xx.tmp ; mv xx.tmp $i ; done
wciskasz enter i pozamiatane.
Możesz to zrobić albo odpalając jakieś livecd z linuksem albo instalując pod windą cygwin-a.
- meczyło mnie więc masz tu wersje pod konsole dosa :) gotowiec tylko kliknac , DrLamok 30/08/07 01:47
wynalazlem na necie seda w wersji win32
( tutaj byl http://sourceforge.net/projects/unxutils )
+ do tego petla w pliku bat
+ zrobilem Ci nawet 4 mini pliki tekstowe do przetestowania działania
gotowiec tutaj
http://rapidshare.com/.../52140091/2linie.zip.html
----
plik 2linie.bat wyglada tak
for %%x in (*.txt) do (
sed "1,2d" %%x > tt
move tt %%x
)
---
wrzucasz 2linie.bat i sed.exe do katalogu z plikami .txt i uruchamiasz 2linie.bat...
obcina 2 pierwsze linie wszystkich znalezionych plików txt tak jak chciałeś.
a teraz to ide spac... bo 0:45 juz a ja o 6 do pracy wstaje
-- rewelacja , DmK 30/08/07 08:53
zaraz będę sprawdzał, dziękuje bardzo :) - działa idealnie , DmK 30/08/07 12:22
serdecznie dziękuje za pomoc, właśnie oszczędziłeś mi paru godzin roboty.
|
|
|
|
 |
All rights reserved ® Copyright and Design 2001-2025, TwojePC.PL |
 |
|
|
|