Unix grep potokowanie

Arwena Marenwen
Arwena Marenwen
  • Rejestracja:około 6 lat
  • Ostatnio:ponad 5 lat
  • Postów:8
0

Piszę skrypt, który ma na celu wypisanie plików które mają w sobie dwa konkretne słowa
Niestety mój skrypt nie wypisuje mi wyniku. Czym to jest spowodowane? Jak mogę to naprawić?

Kopiuj
#!/bin/bash
katalog=$1
slowo1=$2
slowo2=$3

ile=$(ls $katalog | wc -l)
echo "$ile"


tablica=(`ls $katalog`)
echo "tablica:"${tablica[@]}


grep -l $slowo1 ${tablica[@]} | grep -l $slowo2

Jeżeli to złe forum to przepraszam, nie znalazłam lepszego

hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:8 dni
0

Drugi grep robi zupełnie coś innego niż chcesz. Ogólnie ten skrypt jest trochę słaby:

Kopiuj
grep -Rl -e "$slowo1" -e "$slowo2" "$katalog"

EDIT:

Poprawiona wersja

Kopiuj
grep -ZRl -e "$slowo1" "$katalog" | xargs -0 grep -l "$slowo2"

edytowany 2x, ostatnio: hauleth
Zobacz pozostały 1 komentarz
Arwena Marenwen
Arwena Marenwen
a nie cała zawartość wszystkich plików w których znajdzie dane słowo. To sama też umiem napisać
hauleth
I to nie wypisywało całych plików, a tylko nazwy (flaga -l).
Arwena Marenwen
Arwena Marenwen
Wciąż nie robi działa. Tylko coraz więcej błędów powstaje
hauleth
Jakich błędów. Możesz podać?
nalik
  • Rejestracja:około 9 lat
  • Ostatnio:9 dni
  • Postów:1039

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.