15 Przydatne wskazówki i wskazówki dotyczące poleceń „SED” dla codziennych zadań administrowania systemem Linux
- 3384
- 847
- Laura Zygmunt
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 LinuksaW 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:
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/bezpiecznieWyś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 plikuTa 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.tekstTajne 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.tekstUż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.tekstPrzełą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 reprezentuje początek każdej linii do przecinka.
- 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.tekstWymień 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 pliku15. Łą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 poleceniamiStreszczenie
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
- « Dowiedz się, jak używać zmiennych AWK, wyrażeń numerycznych i operatorów przypisania - Część 8
- 9 Najlepsze narzędzia do porównania i różnicy (różnica) dla Linux »