Mastodon

Edycja wielu plików tekstowych z linii poleceń

0
Dodane: 11 lat temu

Pliki tekstowe (przechowywane zazwyczaj z rozszerzeniem txt) są jedną z najpopularniejszych form przechowywania tekstu. Niemal każde urządzenie z wyświetlaczem jest w stanie je otworzyć bez względu na to, czy jest leciwe, czy pachnące nowością. Skoro więc mamy do czynienia z tą formą dokumentów, być może zdarza się, że musimy wprowadzić w nich zmiany, jak na przykład podmienić jedne wyrażenia na inne. W jednym pliku to nie sprawia trudności, ale co wtedy, gdy takich plików jest wiele?

Seria 101 jest kierowana do osób, które dopiero rozpoczynają swoją przygodę ze sprzętem Apple. Mamy nadzieję, że dzięki zawartym w niej wskazówkom będziecie mogli nauczyć się wykorzystywać Wasze telefony, tablety czy komputery w jeszcze bardziej efektywny sposób.

Pomocą może posłużyć chociażby Terminal i to przynajmniej na kilka sposobów. A oto i one:

Za pomocą narzędzia sed

sed to dość rozbudowane narzędzie. Jedną z jego możliwości jest właśnie zastępowanie tekstów. A wszystko odbywa się przy pomocy poniższej komendy:

sed -i "" 's/szukany wyraz lub fragment/podmieniony tekst/g' /ścieżka/DoPlików/*.txt

Dla przykładu, jeśli mamy 3 pliki tekstowe (tekst1.txt, tekst2.txt oraz tekst3.txt), w których znajdują się kolejno zdania:

  • Ala ma kota
  • Ala to koala.
  • Jest 1 września, więc Ala wyrusza do szkoły.

Pliki trzymane są na naszym Biurku. Jeśli chcielibyśmy podmienić w nich nazwę Ala na Patrycja, to polecenie w Terminalu będzie wyglądać następująco:

sed -i "" 's/Ala/Patrycja/g' ~/Desktop/tekst*.txt

Gdybyśmy jednak chcieli na wszelki wypadek zachować zawartość oryginalnych plików, to można to zrobić dodając w miejsce -i "" jakieś rozszerzenie, np.:

sed -i ".bak" 's/Ala/Patrycja/g' ~/Desktop/tekst*.txt

Powyższe polecenie podmieni zawartość plików tekstowych, ale przy okazji stworzy kopię tych oryginalnych, które będą miały rozszerzenie .bak.

Za pomocą narzędzia perl

Druga, podobna metoda przy wykorzystaniu innego narzędzia. Jej użycie wygląda następująco:

perl -pi -w -e 's/tekst do odnalezienia/tekst do zastąpienia/g;' /ścieżka/doPlików/*.txt

Wariant z kopią zapasową z rozszerzeniem .bak:

perl -pi.bak -w -e 's/tekst do odnalezienia/tekst do zastąpienia/g;' /ścieżka/doPlików/*.txt

Źródło: Lifehacker

Maciej Skrzypczak

Użytkownik sprzętu z nadgryzionym jabłkiem, grafik komputerowy, Redaktor iMagazine.pl. Mastodon: mcskrzypczak@c.im

Zapraszamy do dalszej dyskusji na Mastodonie lub Twitterze .