Sed Asenda reavahetus tühikuga

Sed Asenda Reavahetus Tuhikuga



UNIXis/Linuxis on käsk sed spetsiaalne tööriist voogude redigeerimiseks. See võib tekstivooga teha mitmesuguseid toiminguid, nagu otsimine, leidmine ja asendamine ning sisestamine/kustutamine. Enamasti kasutatakse aga tekstisisu otsimiseks ja asendamiseks sed-i.

Selles juhendis tutvustame reavahetuste asendamist tühikuga, kasutades sed.

sed kasutamine teksti asendamiseks

Esiteks vaatame kiiresti põhiotsingu sooritamist ja asendamist sed-i abil. Sama meetodit kasutatakse ka reavahetuste asendamisel tühikutega mõne lisavalikuga. Käskude struktuur on järgmine:







$ sed -e 's///'

Vaadake järgmist käsku:



$ kaja 'kiire pruun rebane' | sed -e 's/quick/fast/g'



Echo käsk prindib stringi STDOUT . STDOUT voog on siis torustik et sed. Oleme andnud sedile korralduse asendada kõik kiire asendamise eksemplarid kiirega. Lõpuks trükitakse väljund ekraanile.





Reavahetuste asendamine tühikuga

Demonstreerimiseks olen loonud järgmise tekstifaili test.txt mitme näiva sisuga:

$ kassi test.txt



Käsk sed aktsepteerib regulaaravaldisi erinevate mustrite kirjeldamiseks. Seda funktsiooni kasutades kirjeldame reavahetust kui \n. Proovime asendada uued read tühikutega:

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

See aga ei toiminud ootuspäraselt. Selle eesmärgi saavutamiseks vajame mõningaid lisavõimalusi. Vaadake järgmist käsku:

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

Käsklusel sed on mitu jaotist; igaüks tähistab konkreetset ülesannet:

  • :a: loob sildi 'a'
  • N: lisab mustriruumi järgmise rea
  • $!ba: kui mitte viimane rida, naaseb sildile 'a'
  • s/\n/ /g: otsib ja asendab reavahetuse (\n) tühikuga (/ /). Muster on sobitatud globaalselt (/g)

Käsk sed läbib samme, kuni jõuab viimase reani, asendades kõik \n märgid tühikuga.

Selle keeruka käsu asemel saame asju lihtsustada lipu -z abil, mis määrab, et sed töötaks null-eraldatud kirjetega. Käsk näeks välja selline:

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

Alternatiivsed meetodid

Kuigi sed saab ülesandega suurepäraselt hakkama, on mõned alternatiivsed tööriistad. Selles jaotises vaatleme lühidalt mõnda neist.

Järgmise näite puhul saame käsu tr kasutada reavahetuse asendamiseks tühikuga lihtsal viisil:

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

Töö tegemiseks saame kasutada ka perli. Järgmine süntaks on samuti sarnane sellega, mida kasutasime sed-iga (kuid lihtsustatud):

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

Teine viis ridade asendamiseks tühikutega on käsu paste kasutamine. Pange tähele, et see saab eemaldada ainult ühe tähemärgi:

$ paste -s -d ' ' test.txt

Sarnaselt sediga on Linuxil ka teine ​​tööriist awk. Sarnaselt sed-iga võib see sisendil teha ka mõningaid täpsemaid asendusi. Meie eesmärkidel kasutage järgmist awk käsku:

$ awk 1 ORS=' ' test.txt

Järeldus

Selles juhendis uuriti, kuidas sed-i abil reavahetust tühikuga asendada. See saavutati kahel erineval viisil. See juhend sisaldab ka muid asjakohaseid tööriistu, mida saame kasutada reavahetuse asendamiseks tühikutega.

Selle asemel, et kasutada keerulisi käske, mida on raske meelde jätta, kasutame Linuxis paljude asjade tegemiseks Bashi skriptimist. Kuigi see maksab teatud jõudluse, on paindlikkus ja kasutatavus seda väärt. Lisateavet Bash-skriptimine algajatele .