SED Zastąp nową linię przestrzenią

SED Zastąp nową linię przestrzenią
W Unix/Linux polecenie SED jest dedykowanym narzędziem do edycji strumieni. Może wykonywać różne operacje w strumieniu tekstowym, takie jak wyszukiwanie, znajdowanie i wymiana oraz wprowadzanie/usuwanie. W większości jednak SED służy do znalezienia i wymiany treści tekstowych.

W tym przewodniku zaprezentujemy zastępowanie nowych linii przestrzenią za pomocą SED.

Za pomocą SED do wymiany tekstu

Najpierw szybko spójrzmy na wykonanie podstawowego znaleziska i wymień za pomocą SED. Ta sama metoda zostanie zastosowana podczas wymiany nowych linii przestrzeniami dodatkowymi opcjami. Struktura polecenia jest następująca:

$ sed -e 's ///'

Spójrz na następujące polecenie:

$ echo „The Quick Brown Fox” | sed -e 's/fuck/fast/g'

Polecenie echo drukuje ciąg do stdout. Strumień stdout jest następnie przekładany do sed. Poinstruowaliśmy SED, aby zastąpić dowolną instancję szybkiego zastąpienia szybkim. Wreszcie wyjście jest drukowane na ekranie.

Zastąpienie nowych linii przestrzenią

Do demonstracji stworzyłem następujący test pliku tekstowego.TXT z kilkoma manekinem:

Test $ CAT.tekst

Polecenie SED przyjmuje wyrażenia regularne do opisania różnych wzorców. Wykorzystując tę ​​funkcję, opiszemy Newline jako \ n. Spróbujmy zastąpić Newlines Whitespace:

$ sed -e 's/\ n//g'.tekst

Jednak to nie działało zgodnie z oczekiwaniami. Aby osiągnąć ten cel, potrzebujemy dodatkowych opcji. Spójrz na następujące polecenie:

$ sed -e ': a; n; $!BA; s/\ n//g test.tekst

Polecenie SED ma wiele sekcji; Każdy oznacza określone zadanie:

  • : A: Tworzy etykietę „A”
  • N: Dodaje następny wiersz do przestrzeni wzorów
  • $!BA: Jeśli nie ostatnia linia, powraca, aby oznaczyć „A”
  • s/\ n//g: znajduje i zastępuje nową linię (\ n) przestrzenią (//). Wzór jest dopasowany na całym świecie (/g)

Polecenie SED zapętla się przez kroki, aż dotrze do ostatniego wiersza, zastępując wszystkie znaki \ n.

Zamiast tego złożonego polecenia możemy uprościć rzeczy, używając flagi -Z, która określa SED do pracy z zerowymi rekordami. Polecenie wyglądałoby tak:

$ sed -z -e 's/\ n//g'.tekst

Alternatywne metody

Podczas gdy SED może wykonać zadanie dobrze, istnieje kilka alternatywnych narzędzi. W tej sekcji krótko zbadamy kilka z nich.

W poniższym przykładzie możemy użyć polecenia TR do zastąpienia nowej linii białą białą w prosty sposób:

$ tr '\ n "< test.txt

Możemy również użyć Perla do wykonywania pracy. Poniższa składnia jest również podobna do tego, co użyliśmy z SED (ale uproszczonym):

$ perl -p -e 's/\ n//' test.tekst

Innym sposobem na zastąpienie nowych linii na białe listy jest użycie polecenia wklejania. Zauważ, że może usunąć tylko jeden znak:

$ wklej -s -d „test.tekst

Podobnie jak SED, Linux jest wyposażony w inny narzędzia AWK. Podobnie jak SED, może również wykonać niektóre zaawansowane wymiany na wejściu. Do naszego celu użyj następującego polecenia AWK:

$ awk 1 ors = "test test.tekst

Wniosek

W tym przewodniku zbadano, w jaki sposób możemy zastąpić Newline na przestrzeń za pomocą SED. Zostało to osiągnięte na dwa różne sposoby. Niniejszy przewodnik zawiera również inne odpowiednie narzędzia, których możemy użyć do zastąpienia Newline na Whitespace.

Zamiast używać złożonych poleceń, które są trudne do zapamiętania, używamy skryptowania bash, aby wykonywać wiele rzeczy w Linux. Chociaż kosztuje pewną wydajność, elastyczność i użyteczność są tego warte. Dowiedz się więcej o skryptach Bash dla początkujących.