Forum » Operacijski sistemi » [ Linux ] Kako zbrisati določene vrstice iz več fajlov hkrati?
[ Linux ] Kako zbrisati določene vrstice iz več fajlov hkrati?
pingec ::
Imam 100MB logov in bi jih rad nekako prefiltriral. Logi imajo en event na eno vrstico, rad bi pa deletal v njih samo vrstice, ki vsebujejo dve besedi ne glede na njuno zaporedje ali besede ki so med njima.
Mislim, da ne bo to tezko za izkušene uporabnike linuxa :)
Mislim, da ne bo to tezko za izkušene uporabnike linuxa :)
Normalnost je povprečje nenormalnih ljudi.
JamesBond ::
find /direktorij -name "*.*" | xargs perl -pi -e 's/original_string/novi_string/g'
Evo.
Edit: Ajks, to ni natanko to kar hočeš. Bom probal popraviti.
Evo.
Edit: Ajks, to ni natanko to kar hočeš. Bom probal popraviti.
Zgodovina sprememb…
- spremenilo: JamesBond ()
pingec ::
ok z grep mi rata dobit ven tisto kar hocem pobrisat, kako pa to pobrisem?
Normalnost je povprečje nenormalnih ljudi.
Gwanaroth ::
cat imeloga.log | grep -v beseda1 | grep -v beseda2 > novilog.log
Prefiltrirani log se ti shrani v novilog.log
Pod beseda1, beseda2 das pac tvoje stringe, ki bi jih rad pobrisal.
Prefiltrirani log se ti shrani v novilog.log
Pod beseda1, beseda2 das pac tvoje stringe, ki bi jih rad pobrisal.
Lights often keep secret hypnosis..
JamesBond ::
Zdaj pa daj tako, da bo iskalo po direktoriju/poddirektorijih in brisalo vrstice z stringi po vseh fajlih..
JamesBond ::
Evo ti ukaz:
find /direktorij -name "*.*" | xargs perl -pi -e 'if(/STRING/){s/^.*$//s}'
find /direktorij -name "*.*" | xargs perl -pi -e 'if(/STRING/){s/^.*$//s}'
pingec ::
JamesBond bom sprobal.
Gwanaroth
cat imeloga.log | grep -v beseda1 | grep -v beseda2 > novilog.log
to sem tudi sam pogruntal samo to mi nardi nov fajl jst bi pa rad da trenutne, že obstoječe editira (ven pobriše)
Gwanaroth
cat imeloga.log | grep -v beseda1 | grep -v beseda2 > novilog.log
to sem tudi sam pogruntal samo to mi nardi nov fajl jst bi pa rad da trenutne, že obstoječe editira (ven pobriše)
Normalnost je povprečje nenormalnih ljudi.
Jean-Paul ::
Nekaj v slogu:
for i in `find . -name "*.log"`;
do
sed -i '/aaa/d' "$i";
done
aaa zamenjas s poljubnim regexom - vsaka vrstica, ki ustreza temu regexu, bo zbrisana.
Pazi: sed-ovo stikalo -i pomeni "edit files in place". Predhodno temeljito preveri, da vidis, ce res dela to, kar zelis. Naredi backup. Backup kopije lahko naredi tudi sed sam, ce mu ukazes -i.bak
P.S. man sed
for i in `find . -name "*.log"`;
do
sed -i '/aaa/d' "$i";
done
aaa zamenjas s poljubnim regexom - vsaka vrstica, ki ustreza temu regexu, bo zbrisana.
Pazi: sed-ovo stikalo -i pomeni "edit files in place". Predhodno temeljito preveri, da vidis, ce res dela to, kar zelis. Naredi backup. Backup kopije lahko naredi tudi sed sam, ce mu ukazes -i.bak
P.S. man sed
Brane2 ::
Lahko tudi v bashu bereš vrstico za vrstico in jo, če ne ustreza filtru, pišeš na izhod.
Nekaj v stilu:
#! /bin/bash
# Uporaba: _skript_ dir output_file
for fname in $1 ;
do {
while read vrstica ;
do { if !grep tralal_etc ;
then echo $vrstica ]/$2
};
done [$1
done
PS: Namesto znaka za večje in manjše sem uporabil oglate oklepaje.
Kako hudiča postat kodo na ST ? A ni bil včasih en knof za inkludanje kode ?
Nekaj v stilu:
#! /bin/bash
# Uporaba: _skript_ dir output_file
for fname in $1 ;
do {
while read vrstica ;
do { if !grep tralal_etc ;
then echo $vrstica ]/$2
};
done [$1
done
PS: Namesto znaka za večje in manjše sem uporabil oglate oklepaje.
Kako hudiča postat kodo na ST ? A ni bil včasih en knof za inkludanje kode ?
On the journey of life, I chose the psycho path.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Bash osnoveOddelek: Programiranje | 2043 (833) | Brane22 |
» | grep - čisto malo pomoči ;)Oddelek: Programiranje | 2372 (1849) | c0dehunter |
» | bash grepOddelek: Programiranje | 1414 (1061) | boogie_xlr |
» | Regexp, grep, awk problem?Oddelek: Programiranje | 1717 (1439) | Brane2 |
» | Skripte (strani: 1 2 )Oddelek: Programiranje | 8846 (6709) | Microsoft |