Je

Potrzebujesz pomocy z C, C++, perl, python, itp.
redgrist
Posty: 64
Rejestracja: 23 kwietnia 2010, 11:19
Lokalizacja: Trójmiasto

Jeśli zawartość pliku jest na lista.txt to.... puść makarenę

Post autor: redgrist »

Dzień dobry,
Nie wiem jak się zabrać do takiego problemu, może ktoś będzie uprzejmy naprowadzić.

Potrzebuję w katalogu np. dane1 w zawartych tam plikach 1.txt 2.txt itd znaleźć pliki które w sekcji <jakaś sekcja> zawierają ciąg znaków który znajduje się w pliku lista.txt

Jeśli zatem znajdę w pliku 1.txt ciąg 123 to sprawdzam czy jest on w pliku lista.txt i jeśli jest to kopiuję go (plik 1.txt) sobie do katalogu np. znalezione.
Jeśli zaś nie ma zawartości tej sekcji na lista.txt to zostawiam plik w spokoju.
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

Skoro wiesz, co chcesz osiągnąć... to pozostaje Ci tylko zacząć pisać.
Czytasz plik lista.txt linia po linii i sprawdzasz czy dana linijka znajduje się w którymś z plików danego katalogu. Jeśli tak, kopiujesz, jeśli nie - przeszukujesz dalej. I tak do samego końca pliku lista.txt.
redgrist
Posty: 64
Rejestracja: 23 kwietnia 2010, 11:19
Lokalizacja: Trójmiasto

Post autor: redgrist »

Czytasz plik lista.txt linia po lini
Oczywiście, że wiem co chcę osiągnąć, jestem płci męskiej więc jest to niejako oczywiste.
Problem w tym, że nie wiem jeszcze jak. Właśnie na przykład nie wiem jak mam czytać ten plik linia po linii aż trafię na ciąg zawarty w pliku lista.txt
mariaczi
Member
Posty: 1343
Rejestracja: 08 lutego 2008, 12:58
Lokalizacja: localhost@śląskie

Post autor: mariaczi »

Podpowiadam hasłami [dla skryptu w bash]: pętla while, read, grep/sed, cp, if i pewnie coś jeszcze może okazać się przydatne.
Musisz raczej czytać plik lista.txt linia po linii jak pisałem wcześniej, i sprawdzać czy owa linia występuje w którymś z plików (1.txt, 2.txt itd) i w zależności od rezultatu podjąć akcję - kopiować lub nie.
redgrist
Posty: 64
Rejestracja: 23 kwietnia 2010, 11:19
Lokalizacja: Trójmiasto

Post autor: redgrist »

Kod: Zaznacz cały

#!/bin/bash
lista=`cat lista.txt |awk '{print $1}'`
cp `grep -l "$lista" /katalogod/*.txt` /katalogdo/
Można prościej. Może komuś się przyda.
ODPOWIEDZ