Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: masowa zmiana tresci w plikach tekstowych  (Przeczytany 2486 razy)

VPN

  • Gość
masowa zmiana tresci w plikach tekstowych
« dnia: 2015-05-23, 21:09:32 »
Mam katalog.
W katalogu podkatalogi, a w podkatalogach, kilka plików tekstowych.
W plikach tekstowych są scieżki bezpośrednie, odwołujące się do pozostałych plików w danym podkatalogu. Czasami jest to c:\\katalog\\podkatalog a innym razem \\\\ADRES_IP_PC\\udział\\katalog a jeszcze innym razem  \\\\ADRES_IP_PC\\c:\\katalog\\podkatalog.
Plików są tysiące a zamierzam je przenieść na inną maszynę, inny dysk do innego katalogu.
Jak zmienić te ścieżki? Próbuje sed'em ale na razie bez sukcesu.

Zbyszek

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
masowa zmiana tresci w plikach tekstowych
« Odpowiedź #1 dnia: 2015-05-23, 21:35:23 »
W skryptach basha jesli skrypt i pliki które używa znajduja się w jednym katalogu np. w katalogu "Moje",
to  gdziekolwiek przenieniesz katalog "Moje", skrypt dalej bedzie działał i złatwością je znajdzie, za pomocą takiej zmiany ścieżki:
/cośtam/cośtam/Moje/katalog/plik
na
`pwd`/katalog/plik
W czasie wykonywania skryptu "pwd" jest zastąpione ścieżką skąd wykonywany jest skrypt.

Odnośnie twojego przykładu...
Co chcesz żeby dokładnie sed zrobił?
Możesz podać przykład jak ma wyglądać rezultat?
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

VPN

  • Gość
masowa zmiana tresci w plikach tekstowych
« Odpowiedź #2 dnia: 2015-05-24, 16:25:50 »
Zamiana miałaaby by dotyczyć treści wszystkich plików w podkatalogach z zachowaniem obecnej ścieżki wzglednej a więc przykładowo
c:\\katalog\\podkataloga\\podkatalogb na z:\\katalog\\podkataloga\\podkatalogb

lub
\\\\ADRES_IP\\udział\\c:\\katalog\\podkatalog2\\podkatalogc na z:\\katalog\\podkatalog2\\podkatalogc

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
masowa zmiana tresci w plikach tekstowych
« Odpowiedź #3 dnia: 2015-05-24, 18:12:55 »
wygooglalem...  
http://www.nfire.eu/?m=articles&article_id=43
postanowiłem że zamieni " c: " na " z: " , bo jest to ciąg znaków unikalny,
ale tym dwukropkiem coś nie działało,
szukałem coś o dwukropku...
http://pl.comp.os.linux.narkive.com/uePegTOF/usuni-cie-dwukropkow-z-ci-gu-znakow
a więc,
sed -e  's/c:'/z:'/g' plik
powinno w pliku zamienić " c: "  na  " z: ".
aaa...
i to jeszcze nie wszystko,
wynik musisz sobie nadpisać jakoś do pliku.

Do wiekszej liczby plików lub wszystkich zrobilbym skrypt który wyszuka te pliki
i liste zapisze do pliku,
nastepnie skrypt by przeczytal każdą linie, i wykonał polecenie sed do każdego pliku.

taki sobie przykład (fragment):
	# In $file  is $ad lines.
ad=$(cat -n $file | tail -1 | awk '{print $1}')

for i in `seq 1 $ad`
do
ae=$(awk 'NR=='$i $file)
# ae=line from file

sed -e  's/c:'/z:'/g'  $ae
done
Edit:
Nadpisywanie tego samego pliku (przykład):
echo -e "$(cat `pwd`/tmp/surce.bak | grep -v "$TREE")" > `pwd`/tmp/surce.bak
.


Edytowane:
Albo... , z przykładów znalezionych w wyszukiwarce można tak:
 sed -i -e 's/c:'/z:'/g' plik
powinno odrazu nadpisać

Cytuj
sed --help
...
  -i[SUFFIX], --in-place[=SUFFIX]
                 edit files in place (makes backup if SUFFIX supplied)
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.