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.tekstPolecenie 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'.tekstJednak 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.tekstPolecenie SED ma wiele sekcji; Każdy oznacza określone zadanie:
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'.tekstAlternatywne 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.txtMoż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.tekstInnym 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.tekstPodobnie 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.tekstWniosek
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.