Sed Cserélje ki az újsort szóközzel

Sed Cserelje Ki Az Ujsort Szokozzel



UNIX/Linux rendszerben a sed parancs egy dedikált eszköz az adatfolyamok szerkesztéséhez. Különféle műveleteket tud végrehajtani a szövegfolyamon, például keresést, keresést és cserét, valamint beszúrást/törlést. A sed azonban többnyire szöveges tartalmak keresésére és cseréjére szolgál.

Ebben az útmutatóban bemutatjuk az újsorok szóközzel való helyettesítését a sed használatával.

A sed használata a szöveg cseréjéhez

Először is nézzük meg gyorsan az alapvető keresést és cserét a sed használatával. Ugyanezt a módszert alkalmazzuk, amikor az újsorokat szóközökkel cseréljük le néhány további opcióval. A parancs szerkezete a következő:







$ sed -e 's///'

Tekintse meg a következő parancsot:



$ echo 'a gyors barna róka' | sed -e 's/quick/fast/g'



Az echo parancs kiírja a karakterláncot: STDOUT . Az STDOUT folyam akkor csöves hogy sed. Utasítottuk a sed-et, hogy a quick to be minden példányát cserélje le fastra. Végül a kimenet a képernyőre kerül.





Az újsorok helyettesítése szóközzel

A demonstráció kedvéért létrehoztam a következő test.txt szöveges fájlt, több áltartalommal:

$ macska teszt.txt



A sed parancs reguláris kifejezéseket fogad el különféle minták leírására. Ezt a funkciót kihasználva az újsort \n-ként fogjuk leírni. Próbáljuk meg az új sorokat szóközzel helyettesíteni:

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

Ez azonban nem úgy működött, ahogy várták. E cél eléréséhez további lehetőségekre van szükségünk. Tekintse meg a következő parancsot:

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

A sed parancs több szakaszból áll; mindegyik konkrét feladatot jelöl:

  • :a: Létrehoz egy „a” címkét
  • N: A következő sort hozzáfűzi a mintatérhez
  • $!ba: Ha nem az utolsó sor, akkor visszatér az „a” címkéhez
  • s/\n/ /g: Megkeresi és lecseréli az újsort (\n) szóközre (/ /). A minta globálisan illeszkedik (/g)

A sed parancs végigfut a lépéseken, amíg el nem éri az utolsó sort, és minden \n karaktert szóközzel helyettesít.

Ez az összetett parancs helyett egyszerűsíthetjük a dolgokat a -z kapcsoló használatával, amely megadja, hogy a sed null-elválasztott rekordokkal működjön. A parancs így nézne ki:

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

Alternatív módszerek

Bár a sed remekül meg tudja oldani a feladatot, van néhány alternatív eszköz. Ebben a részben röviden megvizsgálunk néhányat.

A következő példában a tr paranccsal egyszerűen helyettesíthetjük az újsort szóközzel:

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

A feladat elvégzéséhez perl-t is használhatunk. A következő szintaxis is hasonló ahhoz, amit a sed-nél használtunk (de leegyszerűsítve):

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

Az újsorok szóközzel való helyettesítésének másik módja a beillesztés parancs. Vegye figyelembe, hogy csak egy karaktert távolíthat el:

$ paste -s -d ' ' test.txt

A sed-hez hasonlóan a Linux is egy másik awk eszközzel érkezik. A sed-hez hasonlóan néhány speciális cserét is végrehajthat a bemeneten. Célunk érdekében használja a következő awk parancsot:

$ awk 1 ORS=' ' test.txt

Következtetés

Ez az útmutató azt vizsgálta, hogyan helyettesíthetjük az újsort szóközzel a sed használatával. Ezt két különböző módon sikerült elérni. Ez az útmutató egyéb releváns eszközöket is tartalmaz, amelyek segítségével az újsort szóközzel helyettesíthetjük.

Ahelyett, hogy bonyolult, nehezen megjegyezhető parancsokat használnánk, sok mindent Bash-szkriptet használunk Linux alatt. Bár némi teljesítmény ára van, a rugalmasság és a használhatóság megéri. Tudj meg többet Bash szkriptelés kezdőknek .