Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[OT] Wycięcie z pliku danych od wiersza XX do wiersza YY
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Polskie forum (Polish) Polish OTW
View previous topic :: View next topic  
Author Message
Alpin19
Tux's lil' helper
Tux's lil' helper


Joined: 12 Nov 2005
Posts: 83
Location: Warszawa

PostPosted: Wed Jan 25, 2006 6:58 am    Post subject: [OT] Wycięcie z pliku danych od wiersza XX do wiersza YY Reply with quote

Witam
Mam taki problem.
"grepuje" pliki w katalogu poszukiwanego ciągu znaków poleceniem:
Code:
grep 'ciąg znaków' FILE_* -l

W ten sposób znajduję plik w którym znajduje się ten ciąg znaków.
Teraz potrzebuję wyciąć z tego pliku jedynie 10 wierszy, zaczynając od wiersza w którym znajduje się ów ciąg znaków.
Czyli naprzykład:

Szukam ciągu znaków "faktura 5523", polecenie znajduje sie w pliku "przykład.txt" i znajduje się w wierszu 48 od góry, więc wycinam z pliku tylko wiersze 48 do 58 !

Jak to zrobić ?
_________________
...jak to dobrze że adminem AS/400 jest kolega ;)
Jabber: alpin19[at]chrome.pl
http://lipnicki.waw.pl
Back to top
View user's profile Send private message
blazeu
Apprentice
Apprentice


Joined: 02 Feb 2005
Posts: 159
Location: Cracow, Poland

PostPosted: Wed Jan 25, 2006 7:16 am    Post subject: Reply with quote

Code:
grep 'ciąg znaków' FILE_* -l -A liczba_linii_do_wyciecia

Nie wiem czy o to chodzi, ale jezeli tak, to potem mozesz to przeslac do innego pliku przez >> albo > .
_________________
Przeczytanie manuala: 5-10minut
Zadanie kolejnego bzdurnego pytania na forum: 0.5 minuty
Status idioty wsrod forumowiczow: bezcenny
Tako rzecze ja: kapral rezerwy :)
Back to top
View user's profile Send private message
_troll_
Bodhisattva
Bodhisattva


Joined: 04 Feb 2004
Posts: 1971
Location: Warszawa, Poland

PostPosted: Wed Jan 25, 2006 10:44 am    Post subject: Reply with quote

Code:
sed -n -e 'X,Y p' plik.txt
jesli nic nie pomylilem

mozesz tez badac zawartosc sed'em

Pozdrawiam,
Przemek
_________________
Życie jest jak pudełko czekoladek....
Nigdy nie wiesz na co trafisz" by mother of Forrest Gump
Back to top
View user's profile Send private message
Alpin19
Tux's lil' helper
Tux's lil' helper


Joined: 12 Nov 2005
Posts: 83
Location: Warszawa

PostPosted: Wed Jan 25, 2006 3:10 pm    Post subject: Reply with quote

Rozwiązałem to w następujący sposób (dla potomnych :) ):
Code:

# Tworze pliki niezbedne do dzialania
# skryptu:
if [ -e /home/karol/temp.txt ]; then
   rm /home/karol/temp.txt;
   touch /home/karol/temp.txt;
fi
touch /home/karol/temp_2.txt;

fvatdir="/home/AS400/arc_negoce/version_2/";

echo -n "Podaj nr faktury: ";
  read fvat;
    echo "Wyszukujesz fakture nr: $fvat";

echo -n "Podaj adres email: ";
  read fvatmail;
    echo "Faktura zostanie wysłana na adres email: $fvatmail";

cd $fvatdir;
  fname=`grep $fvat INSFA05010* -l`;

echo "Faktura o numerze $fvat znajduje sie w pliku: $fname";
   

#------------------------------------------
# Zliczam ilość wierszy w pliku źródłowym
wiersze=`wc -l $fname | awk '{print $1}'`;
echo "Plik liczy $wiersze linii";

#------------------------------------------
# Określam miejsce w którym zaczyna sie faktura
faktura=`grep -n "FAKTURA VAT $fvat" $fname | awk '{print $1}' | sed s/:$//g`;
echo "Faktura Nr $fvat zaczyna sie w wierszu: $faktura";

#------------------------------------------
# Obliczam od którego wiersza wycina
addline=$(( $faktura - 1));
echo $addline;
cut_from=$(( $wiersze - $addline ));
echo "Faktura zostanie przycięta od wiersza: $cut_from";

#------------------------------------------
# Przesyłam dane do pliku tymczasowego
tail -n $cut_from $fname > /home/karol/temp.txt;
nwfl=`wc -l /home/karol/temp.txt | awk '{print $1}'`;
   echo "Nowy plik liczy $nwfl wierszy";

#------------------------------------------
# Obliczam wiersz na ktorym faktura sie konczy
sec_fvat=`grep -n "FAKTURA VAT" /home/karol/temp.txt | head -n 2 | tail -n 1 | awk '{print $1}' | sed s/:$//g`;
sec_fvat2=$(( $sec_fvat - 1));
echo "Faktura zostanie przycięta w wierszu: $sec_fvat2";

#------------------------------------------
# Wycinanie:
head -$sec_fvat2 /home/karol/temp.txt > /home/karol/temp_2.txt
echo "Plik przycięto";

#------------------------------------------
# Przygotowuje plik do wysłania
mv -f /home/karol/temp_2.txt /home/karol/faktura_$fvat.txt

   if [ -e /home/karol/faktura_$fvat.txt ]; then
      mail -s "Faktura $fvat" $fvatmail < /home/karol/faktura_$fvat.txt;
      echo "Mail został wysłany pomyślnie !";
   fi
exit;

_________________
...jak to dobrze że adminem AS/400 jest kolega ;)
Jabber: alpin19[at]chrome.pl
http://lipnicki.waw.pl
Back to top
View user's profile Send private message
psycepa
Veteran
Veteran


Joined: 27 Dec 2004
Posts: 1637
Location: Poland

PostPosted: Fri Jan 27, 2006 12:59 am    Post subject: Reply with quote

[SOLVED] ??:>
_________________
RLUNo. 376073
bo czytac, to trzeba ze zrozumieniem (c) by psycepa
"nigdy nie kloc sie z glupcem, najpierw sprowadzi cie do swojego poziomu a potem pokona doswiadczeniem"
"Life is complex. It has its real and imaginary part."
Back to top
View user's profile Send private message
Alpin19
Tux's lil' helper
Tux's lil' helper


Joined: 12 Nov 2005
Posts: 83
Location: Warszawa

PostPosted: Fri Jan 27, 2006 1:08 pm    Post subject: Reply with quote

Sądzisz że wątek powinien być zaklasyfikowany jako [solved] ?
_________________
...jak to dobrze że adminem AS/400 jest kolega ;)
Jabber: alpin19[at]chrome.pl
http://lipnicki.waw.pl
Back to top
View user's profile Send private message
psycepa
Veteran
Veteran


Joined: 27 Dec 2004
Posts: 1637
Location: Poland

PostPosted: Fri Jan 27, 2006 1:51 pm    Post subject: Reply with quote

Alpin19 wrote:
Rozwiązałem to w następujący sposób (dla potomnych :) ):


hmm wydawalo mi sie zo znaczy ze rozwiazales swoj problem, no chyba ze jest inaczej, wtedy zwracam honor...
_________________
RLUNo. 376073
bo czytac, to trzeba ze zrozumieniem (c) by psycepa
"nigdy nie kloc sie z glupcem, najpierw sprowadzi cie do swojego poziomu a potem pokona doswiadczeniem"
"Life is complex. It has its real and imaginary part."
Back to top
View user's profile Send private message
Alpin19
Tux's lil' helper
Tux's lil' helper


Joined: 12 Nov 2005
Posts: 83
Location: Warszawa

PostPosted: Fri Jan 27, 2006 8:28 pm    Post subject: Reply with quote

ehhh psycepa.... Praca nad skryptem dopiero się zaczyna :)
Teraz muszę stworzyć na tej podstawie coś co będzie wyszukiwało wg sześciu kryteriów (pobieranych z zawartości pliku), więc możesz mi spokojnie życzyć powodzenia :)
_________________
...jak to dobrze że adminem AS/400 jest kolega ;)
Jabber: alpin19[at]chrome.pl
http://lipnicki.waw.pl
Back to top
View user's profile Send private message
qermit
Veteran
Veteran


Joined: 02 Feb 2005
Posts: 1032

PostPosted: Fri Jan 27, 2006 9:03 pm    Post subject: Reply with quote

takie rzeczy w pythonie piszę
wycinanie 10 lini z pliku (parametr 1) od lini w której znajduje się tekst (parametr 2)
Code:

from sys import argv

linia = -1
dane = open(argv[1]).readlines()
for i in range(len(dane)):
   if argv[2] in dane[i]:
      linia=i
      break

dane2=dane[linia:+10]
for i in dane2:
   print i,



dlaczego w pytonie?
- bo ma ładną składnie
- bo ma mnóstwo rozszeżeń (podobnie jak inne języki skryptowe)

PS pisałem z pamięci
_________________
"A co ty masz w swoim LinuXie?" - Dr Qermit
Back to top
View user's profile Send private message
Alpin19
Tux's lil' helper
Tux's lil' helper


Joined: 12 Nov 2005
Posts: 83
Location: Warszawa

PostPosted: Fri Jan 27, 2006 9:35 pm    Post subject: Reply with quote

Z kolei znajomy polecił mi pisanie tego w Perl'u :)
_________________
...jak to dobrze że adminem AS/400 jest kolega ;)
Jabber: alpin19[at]chrome.pl
http://lipnicki.waw.pl
Back to top
View user's profile Send private message
Aktyn
l33t
l33t


Joined: 25 Dec 2005
Posts: 619

PostPosted: Fri Jan 27, 2006 9:42 pm    Post subject: Reply with quote

Alpin19 wrote:
Z kolei znajomy polecił mi pisanie tego w Perl'u :)

Każdy poleca to na tym czym sie zna, ja nie znam sie na żadnym języku poza C, no i troche asm dla niektórych mikrokontrolerów.
Mało bystry pod tym względem jestem :/
w shellu, czy to bash czy ssh czy jakis inny, tylko troche sie orientuje.
_________________
Aktyn Pages
są ludzie inteligentni, są nad wyraz inteligentni i błyskotliwi, są jasnowidze, są wszechwiedzący bogowie, oraz ludzie piszący kompilatory
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Polskie forum (Polish) Polish OTW All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum