2009-10-22 4 views
10

Plik:Użyj bash do odczytu pliku, a następnie wykonać polecenie od słów ekstrakcji

hello 
world 

Chciałbym użyć języka skryptowego (BASH), aby wykonać polecenie, które odczytuje każdy WORD w FILE powyżej, a następnie podłącza się do command.

Następnie przechodzi do następnego słowa na liście (każde słowo w nowej linii). Zatrzymuje się po osiągnięciu końca FILE.


Progresja byłby podobny do tego:

Czytaj pierwszy WORD z FILE powyżej

Wtyczka słowem w poleceniu

command WORD > WORD 
  • który wyświetli go do tekstu plik; ze słowem jako nazwą pliku.

Powtórz ten proces, ale z następnym n-ty WORD (każdy w nowej linii).

Zakończ proces po osiągnięciu końca FILE powyżej.


Wynik polecenia bash naFILE powyżej:

komentarzy:

RESULT OF COMMAND UPON WORD hello 

świat:

RESULT OF COMMAND UPON WORD world 
+0

Nie - jego hobby-projekt, aby utworzyć listę wszystkich francuskich koniugacji Verb z dużą listę francuskich czasowników. – user191960

+0

800 Czasowniki francuskie -> francuski-koniugator (debian) -> Utwórz katalog koniugacji -> Utwórz karty Flash -> Opublikuję link, gdy skończę (quizet.com). – user191960

+5

@ ghostdog74 - Jak mogłeś w to wątpić? Pomagałeś mi przez kilka dni;) z manipulacją tekstem w systemach * nix. Domyślam się, że pytanie wygląda trochę pracowicie - ale zrobiłem to, aby inni mogli skorzystać z mojej abstrakcji. W przeciwnym razie mogłem po prostu podłączyć to, co chciałem. – user191960

Odpowiedz

24

Można użyć pętli "for", aby to zrobić . coś jak ..

for WORD in `cat FILE` 
do 
    echo $WORD 
    command $WORD > $WORD 
done 
+0

Działa doskonale! Podobnie jak te poniżej - ale zawiera pliki o dziwnych znakach (apostrofach). Powinienem to powiedzieć - ale starałem się je streścić tak bardzo, jak to możliwe. – user191960

14

zwykle chciałbym zapytać, co próbowałem.

while read -r line 
do 
    command ${line} > ${line}.txt 
done< "file" 
4
IFS=$'\n';for line in `cat FILEPATH`; do command ${line} > ${line}; done