BASH - rozdzielanie ci

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
sponsoriada
Beginner
Posty: 149
Rejestracja: 03 października 2010, 22:58
Lokalizacja: Płock

BASH - rozdzielanie ciągu znaków po znaku "/"

Post autor: sponsoriada »

Witam.
Mam taki problem. Jest ścieżka do katalogu np.:

Kod: Zaznacz cały

/home/jurek/jurkiewicz
Potrzebuję skryptu, który rozdzieli mi taki ciąg i doda do tablicy.
Wynik ma wyglądać tak:

Kod: Zaznacz cały

tablica[0]=home
tablica[1]=jurek
tablica[2]=jurkiewicz
Z góry dziękuję za pomoc i pozdrawiam.

Jeszcze jedno pytanie.
Jak mogę usunąć z pliku konkretny wiersz lub konkretny wyraz?
maxdawid
Posty: 52
Rejestracja: 17 września 2008, 11:30

Post autor: maxdawid »

Np. możesz to zrobić awkiem

Kod: Zaznacz cały

 awk -F "/" {' print $2 '} 
potem $3 itd.
Awatar użytkownika
sponsoriada
Beginner
Posty: 149
Rejestracja: 03 października 2010, 22:58
Lokalizacja: Płock

Post autor: sponsoriada »

Zadanie polega na tym że jest plik w którym są ścieżki do konkretnych folderów:

Kod: Zaznacz cały

/home/piotrek/
/home/jurek/
/etc/lalala/
Napisałem część skryptu do dodawania nowych ścieżek do folderów, a teraz chciałbym móc je usuwać.
Wymyśliłem tak że wszystkie ścieżki z pliku mam w tablicy. I wybieram selectem którą chcę usunąć. I teraz jest problem bo nie wiem jak usunąć daną ścieżkę z pliku.
maxdawid
Posty: 52
Rejestracja: 17 września 2008, 11:30

Post autor: maxdawid »

Kod: Zaznacz cały

sed '/szukanywzorzec/d' nazwa_pliku.txt


Wystarczy tego użyć w mądry sposób
Awatar użytkownika
sponsoriada
Beginner
Posty: 149
Rejestracja: 03 października 2010, 22:58
Lokalizacja: Płock

Post autor: sponsoriada »

Też o tym myślałem tylko to wygląda tak, że dostaje zmienną

Kod: Zaznacz cały

 $śieżka= "/home/jurek/jurek"
i jak ją wstawię w:

Kod: Zaznacz cały

 `sed '/${ścieżka}/d' nazwa pliku`
to nie działa tak ładnie.
maxdawid
Posty: 52
Rejestracja: 17 września 2008, 11:30

Post autor: maxdawid »

Kod: Zaznacz cały

sciezka=/home/jurek
sed "\%$sciezka%d" pliczek
Awatar użytkownika
sponsoriada
Beginner
Posty: 149
Rejestracja: 03 października 2010, 22:58
Lokalizacja: Płock

Post autor: sponsoriada »

Działa! Dziękuję. Nie znałem takiej składni, czy mógłbyś mi ją wyjaśnić?
maxdawid
Posty: 52
Rejestracja: 17 września 2008, 11:30

Post autor: maxdawid »

Mógłbym, ale posłużę się gotowcem:
\%regexp%
(The % may be replaced by any other single character.)

This also matches the regular expression regexp, but allows one to use a different delimiter than /. This is particularly useful if the regexp itself contains a lot of slashes, since it avoids the tedious escaping of every /. If regexp itself includes any delimiter characters, each must be escaped by a backslash (\).
Reszta chyba nie wymaga wyjaśnienia.
Awatar użytkownika
sponsoriada
Beginner
Posty: 149
Rejestracja: 03 października 2010, 22:58
Lokalizacja: Płock

Post autor: sponsoriada »

Super wielkie dzięki jeszcze raz!
Pozdrawiam.

Dodane:
Jak już jesteś tak uczynny to może pomożesz mi albo chociaż nakierujesz.
Sprawa wygląda następująco. Skrypt z pliku będzie pobierał ścieżki do katalogów, które mają być tarowane i wrzuca sobie je do tablicy.
Jak rozwiązać problem pętli, która najpierw będzie pobierała element z tablicy, tarowała i dopiero po zakończeniu pierwszego elementu pobierała drugi i powtarzała czynność.
Nie chcę żeby pętla zrobiła tak, że w jednym czasie będą tarowane wszystkie elementy z tablicy.
Z góry dziękuję.
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Jak dla mnie to strasznie komplikujesz ;)

Kod: Zaznacz cały

while read katalog;
do
  cos1
  cos2
  tar
done <plik_ze_sciezkami
ODPOWIEDZ