Strona 1 z 1

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

: 19 marca 2015, 14:26
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.

: 19 marca 2015, 14:39
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.

: 19 marca 2015, 14:45
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

: 19 marca 2015, 15:23
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.

: 20 marca 2015, 08:41
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.