15 Przydatne wskazówki i wskazówki dotyczące poleceń „SED” dla codziennych zadań administrowania systemem Linux

15 Przydatne wskazówki i wskazówki dotyczące poleceń „SED” dla codziennych zadań administrowania systemem Linux

Każdy administrator systemu ma codziennie radzić sobie z zwykłymi plikami tekstowymi. Wiedząc, jak wyświetlić niektóre sekcje, jak wymienić słowa i jak filtrować treść z tych plików, to umiejętności, które musisz mieć bez konieczności wyszukiwania Google.

15 Przydatnych wskazówek poleceń „SED” dla Linuksa

W tym artykule przejrzymy SED, znany redaktor strumienia i udostępniamy 15 wskazówek, aby go wykorzystać, aby osiągnąć wspomniane wcześniej cele i więcej.

1. Przeglądanie szeregu linii dokumentu

Narzędzia takie jak głowa i ogon pozwalają nam wyświetlić dno lub górną część pliku. Co jeśli będziemy musieli wyświetlić sekcję pośrodku? Następujący sed jeden linijka zwróci linie 5 Poprzez 10 z mój plik.tekst:

# sed -n '5,10p' myfile.tekst 

2. Przeglądanie całego pliku z wyjątkiem danego zakresu

Z drugiej strony możliwe jest wydrukowanie całego pliku z wyjątkiem określonego zakresu. Wykluczyć linie 20 Poprzez 35 z mój plik.tekst, Do:

# sed '20, 35d 'myfile.tekst 

3. Przeglądanie linii i zasięgów niekonsekwatywnych

Możliwe, że jesteś zainteresowany zestawem linii niekonsekwatywnych lub w więcej niż jednym zakresie. Wyświetlmy linie 5-7 I 10-13 z mój plik.tekst:

# sed -n -e '5,7p' -e '10, 13p 'myfile.tekst 

Jak widać, -mi Opcja pozwala nam wykonać daną akcję (w tym przypadku linii drukowania) dla każdego zakresu.

4. Zastąpienie słów lub znaków (podstawowa podstawienie)

Aby zastąpić każdą instancję słowa wersja z fabuła W mój plik.tekst, Do:

# sed 's/wersja/historia/g' myfile.tekst 

Dodatkowo możesz rozważyć użycie żołnierz amerykański zamiast G Aby zignorować przypadek postaci:

# sed 's/version/historia/gi' myfile.tekst 

Aby zastąpić wiele pustych przestrzeni na jedną przestrzeń, użyjemy wyjścia Pokaz trasy IP i rurociąg:

# IP Route Show | sed 's/ *// g' 

Porównaj wyjście Pokaz trasy IP z rurociągiem i bez:

Wymień słowa lub znaki w pliku

5. Zastępowanie słów lub postaci w zasięgu

Jeśli chcesz zastąpić słowa tylko w zakresie linii (30 Poprzez 40, na przykład), możesz zrobić:

# sed '30, 40 s/wersja/historia/g 'myfile.tekst 

Oczywiście możesz wskazać pojedynczą linię za pomocą odpowiedniej liczby zamiast zakresu.

6. Korzystanie z wyrażeń regularnych (zastąpienie zaawansowane) - i

Czasami pliki konfiguracyjne są ładowane z komentarzami. Chociaż jest to z pewnością przydatne, może być pomocne wyświetlanie tylko dyrektyw konfiguracyjnych, jeśli chcesz je wszystkie wyświetlić na pierwszy rzut oka.

Usunąć puste linie lub zaczynają # Z pliku konfiguracyjnego Apache: Zrób:

# sed '/^# \ |^$ \ | *#/d 'httpd.conf 

Znak opiekuńczy, a następnie znak liczbowy (^#) wskazuje na początek linii, podczas gdy ^$ reprezentuje puste linie. Pionowe słupki wskazują operacje logiczne, podczas gdy cięcie do tyłu służy do ucieczki od pionowych prętów.

W tym konkretnym przypadku plik konfiguracyjny Apache ma linie z #'S nie na początku niektórych linii, więc *# służy również do ich usuwania.

7. Korzystanie z wyrażeń regularnych (zastąpienie zaawansowane) - ii

Aby zastąpić słowo zaczynające się na wielkie lub małe litery innym słowem, możemy również użyć SED. Aby zilustrować, zastąpmy słowo zamek błyskawiczny Lub Zamek błyskawiczny z rar w mój plik.tekst:

# sed 's/[zz] ip/rar/g' myfile.tekst 

Nie przegap: Użyj AWK z wyrażeniami regularnymi do filtrowania tekstu w plikach

8. Oglądanie linii zawierających danym wzorem

Kolejne użycie sed polega na drukowaniu linii z pliku, który pasuje do danego wyrażenia regularnego. Na przykład możemy być zainteresowani przeglądaniem działań autoryzacji i uwierzytelniania, które miały miejsce 2 lipca, zgodnie z /var/log/bezpiecznie Zaloguj się Centos 7 serwer.

W takim przypadku wzorzec do wyszukiwania jest 2 lipca Na początku każdej linii:

# sed -n '/^lipca 1/p'/var/log/bezpiecznie 
Wyświetl dzienniki (linie) określonej daty

9. Wkładanie przestrzeni do plików

Z sed, Możemy również wstawić przestrzenie (puste linie) dla każdej nieustannej linii w pliku. Aby wstawić jedną pustą linię każdą inną linię w LICENCJA, zwykły plik tekstowy, zrób:

# sed g myfile.tekst 

Aby wstawić dwie puste linie, zrób:

# sed 'g; g' myfile.tekst 

Dodaj wielki poziom g oddzielone półkolisem, jeśli chcesz dodać więcej pustych linii. Poniższy obraz ilustruje przykład opisany na tej wskazówki:

Wstaw przestrzenie do pliku

Ta wskazówka może się przydać, jeśli chcesz sprawdzić duży plik konfiguracyjny. Wstawienie pustej przestrzeni każda inna linia i przekładanie wyjścia do mniejszego spowoduje bardziej przyjazne wrażenia z czytania.

10. Naśladowanie DOS2Unix z edycją inline

DOS2Unix Program konwertuje zwykłe pliki tekstowe z formatowania systemu Windows/Mac na UNIX/LINUX, usuwając ukryte znaki nowości wstawione przez niektóre edytory tekstu używane na tych platformach. Jeśli nie jest zainstalowany w systemie Linux, możesz naśladować jego funkcjonalność za pomocą sed Zamiast go instalować.

Na zdjęciu po lewej stronie możemy zobaczyć kilka znaków DOS Newline (^M), które zostały później usunięte z:

# sed -i 's/\ r //' myfile.tekst 
Tajne pliki tekstowe z systemu Windows do Linux

Pamiętaj, że -I opcja wskazują na edycję na miejscu. Następnie zmiany nie zostaną zwrócone na ekran, ale zostaną zapisane do pliku.

Notatka: Możesz wstawić znaki DOS Newline podczas edytowania pliku w vim edytorze z Ctrl+v I Ctrl+m.

11. Edycja i tworzenie kopii zapasowej oryginalnego pliku

W poprzedniej wskazówki użyliśmy sed Aby zmodyfikować plik, ale nie zapisałem oryginalnego pliku. Czasami dobrym pomysłem jest zapisać kopię zapasową oryginalnego pliku na wszelki wypadek.

Aby to zrobić, wskazuj sufiks po -I opcja (w pojedynczych cytatach), która ma być używana do zmiany nazwy oryginalnego pliku.

W poniższym przykładzie zastąpimy wszystkie instancje Ten Lub Ten (ignorowanie przypadków) z tym w mój plik.tekst, i zapiszymy oryginalny plik jako mój plik.tekst.Orig.

Wreszcie, użyjemy Diff Utility, aby zidentyfikować różnice między obiema plikami:

# sed -i '.orig "s/this/this/gi 'myfile.tekst 
Użyj SED do edytowania i tworzenia kopii zapasowych oryginalnego pliku

12. Przełączanie par słów

Załóżmy, że masz plik zawierający pełne nazwy w formacie Imię, Nazwisko. Aby odpowiednio przetworzyć plik, możesz chcieć zmienić Nazwisko I Imię.

Możemy to zrobić z sed dość łatwe:

# sed 's/^\ (.*\), \ (.*\) $ /\, /g 'nazwy.tekst 
Przełącz słowa w pliku

Na powyższym obrazku widzimy, że nawiasy, będąc znakami specjalnymi, należy uciec, podobnie jak liczby 1 I 2.

Liczby te reprezentują wyróżnione wyrażenia regularne (które muszą pojawić się w nawiasach):

  1. 1 reprezentuje początek każdej linii do przecinka.
  2. 2 to symbol zastępczy dla wszystkiego, co jest prawem do przecinka do końca linii.

Pożądane wyjście jest wskazane w formacie Secondcolumn (Nazwisko) + przecinek + przestrzeń + Pierwsza kolumna (Imię). Zapraszam do zmiany tego, co chcesz.

13. Zastąpienie słów tylko wtedy, gdy znaleziono oddzielne dopasowanie

Czasami zastąpienie wszystkich wystąpień danego słowa lub losowych niewielu nie jest dokładnie tym, czego potrzebujemy. Być może musimy wykonać wymianę, jeśli znaleziono oddzielne dopasowanie.

Na przykład możemy chcieć wymienić początek z zatrzymywać się Tylko wtedy, gdy usługi słowne zostaną znalezione w tej samej linii. W tym scenariuszu oto, co się stanie:

Musimy zacząć imprezować w pracy, ale pamiętajmy, aby najpierw rozpocząć wszystkie usługi. 

W pierwszej linii, początek nie zostanie zastąpiony zatrzymywać się Ponieważ usługi słowne nie pojawiają się w tej linii, w przeciwieństwie do drugiej linii.

# sed '/usługi/s/start/stop/g' MSG.tekst 
Wymień słowa w pliku

14. Wykonanie dwóch lub więcej substytucji jednocześnie

Możesz połączyć dwa lub więcej podstawień jeden pojedynczy sed Komenda. Zastąpmy słowa, które i link w mój plik.tekst z tym odpowiednio i wierszem.

Zwróć uwagę, jak można to zrobić za pomocą zwykłego sed Dowództwo zastępcze, a następnie półkolis i drugie polecenie zastępcze:

# sed -i 's/this/this/gi; s/line/verse/gi' myfile.tekst 

Ta wskazówka jest zilustrowana na poniższym obrazku:

Wymień wiele słów w pliku

15. Łączenie SED i innych poleceń

Oczywiście, sed można łączyć z innymi narzędziami, aby tworzyć mocniejsze polecenia. Na przykład użyjmy podanego przykładu Wskazówka #4 i wyodrębnij nasz adres IP z wyjścia Trasa IP Komenda.

Zaczniemy od wydrukowania tylko linii, w której słowo src Jest. Następnie przekonwertujemy wiele przestrzeni na jedną. Wreszcie, pokroimy 9 pole (biorąc pod uwagę pojedynczą przestrzeń jako separator pola), w którym jest adres IP:

# IP Route Show | sed -n '/src/p' | sed -e 's/ *// g' | cut -d "-f9 

Poniższy obraz ilustruje każdy krok powyższego polecenia:

Połącz SED z innymi poleceniami

Streszczenie

W tym przewodniku udostępniliśmy 15 wskazówek i wskazówek SED Aby pomóc w codziennych zadaniach administracji systemu. Czy jest jakaś inna wskazówka, której używasz regularnie i chciałbyś podzielić się z nami i resztą społeczności?

Jeśli tak, daj nam znać, używając poniższego formularza komentarza. Pytania i komentarze są również mile widziane - czekamy na wiadomość od Ciebie!

Nie przegap: Opanowanie polecenia Linuxa „Awk” z wskazówkami i sztuczkami