SED - odkształcające się wiersze w pliku tekstowym

SED - odkształcające się wiersze w pliku tekstowym

Sed, krótki „Edytor strumieniowy”, jest potężnym narzędziem przetwarzania tekstu, które jest powszechnie używane w systemach Linux i UNIX. Może wykonywać szeroki zakres operacji na plikach tekstowych, w tym wyszukiwanie, wymiana, wstawienie i usuwanie linii. Jednym z powszechnych zadań, które użytkownicy często muszą wykonywać z SED, jest odkształcenie linii w pliku tekstowym. W tym artykule zapewniamy przewodnik po masterowaniu SED i używanie go do odchudzania w plikach tekstowych.

Zanim zanurzymy się w specyfice używania linii SED do odchudzania, najpierw zdefiniujmy to, co rozumiemy, „odkształceniem.”W programowaniu komentarz jest wierszem kodu, który jest ignorowany przez kompilatora lub interpretera. Służy do dodawania notatek, wyjaśnień lub innych informacji do kodu bez wpływu na jego funkcjonalność. Komentarze są zazwyczaj oznaczone przez specjalny charakter lub sekwencja znaków, takich jak „#” w skontlerze, „//” w C ++ lub „/ * */” w Javie.

Linie odczuwania w plikach tekstowych

Uzyskanie wiersza w pliku tekstowym oznacza usunięcie znaków komentarzy i uczynienie linii aktywną lub wykonywalną. Rozważmy na przykład następujący skrypt powłoki:

#!/bin/bash # to jest komentarz # echo "hello, świat!"
1234#!/bin/bash # to jest komentarz # echo "hello, świat!"

W tym skrypcie pierwszy wiersz nazywa się "szulernia" i mówi systemowi, czego interpreter użyć do wykonywania skryptu. Drugie i trzecie wiersze to komentarze, które zawierają informacje o skrypcie, ale nie są wykonywane. Czwarty wiersz to rzeczywiste polecenie, które drukuje „Cześć, świat!„Do konsoli.

Gdybyśmy chcieli porzucić trzeci wiersz i uczynić go wykonywaniem, usunęlibyśmy postać „#” przed poleceniem „echo”:

#!/bin/bash # to jest komentarz echo „Cześć, świat!"
1234#!/bin/bash #!"

Teraz, gdy rozumiemy koncepcję linii odkształcenia, zobaczmy, w jaki sposób możemy użyć SED do wykonania tego zadania. SED używa wyrażeń regularnych lub regularnych, aby dopasować wzorce w plikach tekstowych i zastosować do nich transformacje. Aby porzucić wiersz, musimy wyszukać postacie komentarzy na początku linii i usunąć je.

Oto podstawowa składnia do używania SED do odchudzania w pliku tekstowym:

sed 's/^#//' inputFile>
1sed 's/^#//' inputFile>

Rozbijmy to polecenie:

  • sed to samo polecenie SED
  • S oznacza „substytut”, którym jest operacja, którą chcemy wykonać
  • /^#/ to wzór regex, który chcemy dopasować. Postać „^” oznacza „początek linii”, a „#” jest postacią komentarza, którą chcemy usunąć.
  • // to ciąg zastępczy, który jest pusty w tym przypadku. Oznacza to, że usuwamy postacie komentarzy i nie zastępujemy ich niczym.
  • wejście to nazwa pliku, którą chcemy zmodyfikować
  • > jest operatorem przekierowania, który wysyła wyjście do nowego pliku zamiast konsoli
  • plik wyjściowy to nazwa nowego pliku, który będzie zawierał niezmienioną wersję pliku wejściowego

Oto przykład, w jaki sposób użylibyśmy tego polecenia do odchudzania wierszy w skrypcie powłoki:

Skrypt sed 's/^#//'.SH> UNCENTIONED.cii
1Skrypt sed 's/^#//'.SH> UNCENTIONED.cii

To polecenie przeczyta zawartość scenariusz.cii, usunąć „#” znaki z dowolnych wierszy, które zaczynają się od nich i napisz wynik do nowego pliku o nazwie FIMMENTED.cii.

Zauważ, że to polecenie usunie tylko znaki komentarza od początku wiersza. Jeśli w trakcie linii pojawią się postacie komentarzy, nie będą na nie dotknięte. Aby usunąć wszystkie znaki komentarzy w pliku, możemy zmodyfikować wzór regex, aby pasował do dowolnego wystąpienia „#” i usunąć go:

sed 's/#//' inputFile>
1sed 's/#//' inputFile>

To polecenie usunie wszystkie „#” znaki w pliku, niezależnie od tego, gdzie się pojawiają.

Warto zauważyć, że polecenie SED, które pokazaliśmy do tej pory, zmodyfikuje plik wejściowy bezpośrednio. Jeśli chcesz utworzyć nowy plik z niezmienioną wersją pliku wejściowego, możesz użyć „> Plik wyjściowy” składnia, jak to zrobiliśmy w powyższych przykładach.

Jeśli chcesz bezpośrednio zmodyfikować plik wejściowy, możesz użyć "-I" Opcja, która oznacza „na miejscu”:

sed -i 's/^#//' inputFile
1sed -i 's/^#//' inputFile

To polecenie usunie „#” znaki z samego pliku wejściowego, bez tworzenia nowego pliku.

Inną przydatną opcją w SED jest "-mi" opcja, która pozwala określić wiele poleceń SED w jednym wierszu poleceń. Może to być przydatne, jeśli chcesz wykonać wiele transformacji w pliku:

sed -e 's/^#//' -e 's/^ *//' inputFile>
1sed -e 's/^#//' -e 's/^ *//' inputFile>

To polecenie najpierw usunie „#”Znaki z dowolnych linii, które zaczynają się od nich, a następnie usuwają wszelkie przestrzenie, które pojawiają się na początku każdej linii.

Wniosek

Podsumowując, mastering SED jest niezbędną umiejętnością dla każdego użytkownika Linux lub UNIX, który pracuje z plikami tekstowymi. Używanie SED do porzucenia linii w pliku jest powszechnym zadaniem, które można łatwo osiągnąć za pomocą „S/^#//” Komenda. Łącząc to polecenie z innymi funkcjami SED, możesz wykonywać potężne operacje przetwarzania tekstu w plikach i zautomatyzować wiele żmudnych zadań.