Sed Zamenjaj novo vrstico s presledkom

Sed Zamenjaj Novo Vrstico S Presledkom



V sistemu UNIX/Linux je ukaz sed namensko orodje za urejanje tokov. Na besedilnem toku lahko izvaja različne operacije, kot so iskanje, iskanje in zamenjava ter vstavljanje/brisanje. Večinoma pa se sed uporablja za iskanje in zamenjavo besedilnih vsebin.

V tem priročniku bomo predstavili zamenjavo novih vrstic s presledkom z uporabo sed.

Uporaba sed za zamenjavo besedila

Najprej si na hitro poglejmo izvajanje osnovnega iskanja in zamenjave z uporabo sed. Ista metoda bo uporabljena pri zamenjavi novih vrstic s presledki z nekaterimi dodatnimi možnostmi. Struktura ukazov je naslednja:







$ sed -e 's///'

Oglejte si naslednji ukaz:



$ echo 'hitra rjava lisica' | sed -e 's/hitro/hitro/g'



Ukaz echo natisne niz v STDOUT . Tok STDOUT je potem cevovod do sed. Naročili smo sed, da vsak primerek quick zamenja s fast. Končno se izhod natisne na zaslon.





Zamenjava novih vrstic s presledkom

Za predstavitev sem ustvaril to besedilno datoteko test.txt z več lažnimi vsebinami:

$ cat test.txt



Ukaz sed sprejema regularne izraze za opis različnih vzorcev. Z uporabo te funkcije bomo novo vrstico opisali kot \n. Poskusimo zamenjati nove vrstice s presledki:

$ sed -e 's/\n/ /g' test.txt

Vendar to ni delovalo po pričakovanjih. Za dosego tega cilja potrebujemo nekaj dodatnih možnosti. Oglejte si naslednji ukaz:

$ sed -e ':a;N;$!ba;s/\n/ /g' test.txt

Ukaz sed ima več razdelkov; vsaka označuje določeno nalogo:

  • :a: Ustvari oznako 'a'
  • N: doda naslednjo vrstico prostoru vzorca
  • $!ba: Če ni zadnja vrstica, se vrne na oznako 'a'
  • s/\n/ /g: Najde in zamenja novo vrstico (\n) s presledkom (/ /). Vzorec se ujema globalno (/g)

Ukaz sed kroži skozi korake, dokler ne doseže zadnje vrstice, pri čemer vse znake \n nadomesti s presledkom.

Namesto tega zapletenega ukaza lahko stvari poenostavimo z uporabo zastavice -z, ki določa sed za delo z zapisi, ločenimi z ničlami. Ukaz bi izgledal takole:

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

Alternativne metode

Medtem ko lahko sed nalogo opravi v redu, obstaja nekaj alternativnih orodij. V tem razdelku jih bomo na kratko preučili nekaj.

V naslednjem primeru lahko z ukazom tr zamenjamo novo vrstico s presledkom na preprost način:

$ tr '\n' ' ' < test.txt

Za delo lahko uporabimo tudi perl. Tudi naslednja sintaksa je podobna tisti, ki smo jo uporabili pri sed (vendar poenostavljena):

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

Drug način za zamenjavo novih vrstic s presledki je uporaba ukaza paste. Upoštevajte, da lahko odstrani samo en znak:

$ paste -s -d ' ' test.txt

Podobno kot sed, Linux prihaja z drugim orodjem awk. Podobno kot sed lahko izvede tudi nekatere napredne zamenjave vnosa. Za naš namen uporabite naslednji ukaz awk:

$ awk 1 ORS=' ' test.txt

Zaključek

Ta vodnik je raziskal, kako lahko zamenjamo novo vrstico s presledkom z uporabo sed. To je bilo doseženo na dva različna načina. Ta priročnik vključuje tudi druga ustrezna orodja, ki jih lahko uporabimo za zamenjavo nove vrstice s presledkom.

Namesto uporabe zapletenih ukazov, ki si jih je težko zapomniti, uporabljamo skripte Bash za izvajanje mnogih stvari v Linuxu. Čeprav gre za ceno določene zmogljivosti, sta prilagodljivost in uporabnost vredni tega. Izvedite več o Bash skriptiranje za začetnike .