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 .