Straumes redaktors (SED): pamati

Straumes Redaktors Sed Pamati



SED, kas pazīstams arī kā straumes redaktors, ir ļoti noderīgs rīks. To izmanto, lai meklētu noteiktu vārdu vai rakstu un pēc tam kaut ko darītu vārdam vai rakstam vai, citiem vārdiem sakot, pārveidotu to. Operētājsistēmā Windows SED sauc arī par 'atrašanas' un 'aizstīšanas' funkcijām. SED nāk ar Ubuntu, tāpēc nekas nav jāinstalē; vienkārši sāciet to lietot. Šajā apmācībā mēs jums pateiksim, kā izmantot SED vai straumes redaktoru.

'S' komanda

Vissvarīgākā no visām komandām SED vai straumes redaktorā ir komanda “s”. “s” apzīmē aizstājēju. Sintakse ir šāda:







‘s / regexp / nomaiņa / karogi


Tātad, piemēriem izmantosim failu ar nosaukumu “file.txt”. Lūk, kā fails.txt izskatās, ja to lietojat:




Izmantosim piemēru, lai parādītu, kā darbojas komanda “s”.



bet ‘s / vispirms / mēness / es fails.txt > mēness.txt


Kad tiek dota šāda izteiksme, tas nozīmē:





    • s — tas apzīmē aizstājēju.
    • pirmais — vārds, kas jāmeklē failā ar nosaukumu “file.txt”.
    • mēness – vārdu “pirmais” aizstāj ar vārdu “mēness”.
    • i – tas nozīmē ignorēt. Pirmajā daļā mēs ignorēsim šo daļu.
    • file.txt — fails, kurā SED meklē modeli vai vārdu. Šajā gadījumā vārds “pirmais” būs:
    • meklēts failā file.txt

    • moon.txt — ja vārds “pirmais” tiek aizstāts ar vārdu “mēness”, tas tiks saglabāts failā “moon.txt”.

Tātad, kas šeit notiek? SED vārdu “pirmais” aizstāj ar “mēness” tikai pirmajā instancē (tas nozīmē, ka, ja vārds “pirmais” notiek vairākas reizes, tas neaizstās to visu vai neaizstās vairākas reizes). Failu, ko tā meklē, sauc par “file.txt”, un pēc pārveidošanas vai aizstāšanas tas tiks saglabāts failā “moon.txt”.



Tas izskatās šādi:


Lūdzu, neaizmirstiet ievietot “/” vietā, kur tai jābūt. Ja izlaidīsit “/”, SED nepieņems komandu.

Līdz šim mēs tikai aizstājām vārdu “pirmais” ar “saskaros” ar aizstāšanu. Tagad pieņemsim, ka mēs vēlamies aizstāt vārdu 'rinda' (kurš ir daudzkārt - četras reizes) trešajā rindā ar vārdu 'eņģelis'.

Kā mēs īpaši mērķējam uz trešo līniju? Mēs izmantojam šādu komandu:

bet '3s / līniju / eņģelis / es fails.txt > angel.txt


Tātad, kas šeit tikko notika? Nu, '3' norāda rindas numuru. Tāpēc tas iet uz trešo rindu. Pēc tam failā ar nosaukumu “file.txt” aizstājiet vārdu “line” ar vārdu “eņģelis” un saglabājiet pārveidoto failu kā “angel.txt”.


Ko darīt, ja mēs vēlamies aizstāt vai pārveidot rindas “3” un “4”?

bet ' 3 ,4s / līniju / eņģelis / es fails.txt > angel2.txt



Ņemiet vērā, ka iepriekšējā piemērā ignorēšanai izmantojām karogu “i”. Tagad mēs izmantojam “g” karogu globālajam.

Izmantosim piemēru, lai parādītu, kā darbojas komanda “s”.

bet ‘s / līniju / saule / g” fails.txt > saule.txt


Ja tiek dota šāda izteiksme, tas nozīmē:

“g” apzīmē globālo. Atcerieties, ka pirmajā piemērā, kad mēs izmantojam karogu “i”, ir tikai viena nomaiņa. Tagad, kad esam pievienojuši “g” globālajam, tas nozīmē aizstāt visur. Tātad tā vietā, lai teiktu pirmo rindu, otro rindu, trešo rindiņu un pēdējo rindiņu, tā saka: pirmā saule, otrā saule, trešā saule un pēdējā saule. Tas aizstāj vārda rindiņu visā failā (visur) ar vārdu 'saule'.


Ko darīt, ja mēs vēlamies atlasīt vienu rindiņu, pamatojoties uz tajā ietverto vārdu? Mēs redzam, ka faila “file.txt” pēdējā rindā ir vārds “pēdējais”. Tagad pieņemsim, ka mēs vēlamies “Šī ir pēdējā rindiņa. Šis ir pēdējais teikums.' teikums kļūt “Šis ir pēdējais spoks. Šis ir pēdējais teikums.'

Mēs rakstām sekojošo:

bet ' / Pēdējais / s / līniju / spoks / ' file.txt > ghost.txt


“Pēdējais” šeit liek SED meklēt rindu, kurā ir vārds “pēdējais”, un pēc tam aizstāt vārdu “line” ar “spoku” šajā rindā.


Tagad pieņemsim, ka mēs vēlamies rīkoties pretēji. Pieņemsim, ka mēs vēlamies, lai katrā rindā bez vārda 'pēdējais' vārds 'rinda' tiktu mainīts uz 'spoku'. Uzrakstīsim sekojošo:

bet ' / Pēdējais /! s / līniju / spoks / ' file.txt > ghost2.txt


Kā redzat šeit, katrā rindā, izņemot pēdējo (kurā ir vārds “pēdējā”), vārds “rinda” ir aizstāts ar vārdu “spoks”.


To var izdarīt arī ar rindu numuriem:

bet ' 3 , 4 ! s / līniju / nakts / es fails.txt > nakts.txt


Šajā gadījumā 3. un 4. rinda tiek izlaista, bet katrā otrajā rindā vārds 'rinda' ir aizstāts ar vārdu 'nakts'.

Vairākas komandas

Ko darīt, ja jums būtu vairākas komandas? Vai jūs labāk darītu to pa vienam vai visu uzreiz un ietaupītu laiku un darbu?

Ko darīt, ja mēs vēlamies mainīt vārdu “pirmais” uz “diena”, “otrais” uz “nakts” un “pārējais” pret “spoks”? Lai to izdarītu, mēs izmantojam semikolu. Neaizmirstiet beigās ievietot semikolu!

Lūdzu, ņemiet vērā, ka jums nav obligāti jāievieto karodziņš “i” vai karogs “ignorēt”, bet pēc transformācijas frāzes noteikti ir jāievieto slīpsvītra (/).

Tagad pārbaudīsim to ar piemēru:

bet ‘s / vispirms / diena / ; s / otrais / nakts / ; s / trešais / spoks / ; s / Pēdējais / spoks / ;' fails.txt > kombinācija.txt


Secinājums

Straumes redaktors vai SED ir veids, kā atlasīt vārdu vai modeli un pārveidot to. Tas faktiski ir loga funkciju “atrast” un “aizstāt” komandrindas ekvivalents. SED komanda var kļūt ļoti sarežģīta, taču, ja jūs zināt vismaz pamatus, esat gatavs to izmantot! SED patiesībā ir ļoti spēcīgs rīks ar daudzām funkcijām. Lai gan mēs nevaram tos visus aptvert vienā apmācībā, mēs apskatījām SED pamatus. Būtībā mēs uzzinājām, kā pārveidot konkrētu vārdu, izmantojot komandu “s”, kur “s” apzīmē aizstājēju. Mēs varam aizstāt vārdus ar citiem vārdiem, selektīvi izvēlēties rindu, kurā tiks veikta aizstāšana, vai pat to noliegt. Jebkurā gadījumā šī ir vienkāršākā SED daļa.

Laimīgu kodēšanu!