Sed Aizstāt jauno rindiņu ar atstarpi

Sed Aizstat Jauno Rindinu Ar Atstarpi



Operētājsistēmā UNIX/Linux komanda sed ir īpašs straumju rediģēšanas rīks. Tā var veikt dažādas darbības teksta straumē, piemēram, meklēšanu, atrašanu un aizstāšanu, kā arī ievietošanu/dzēšanu. Tomēr lielākoties sed tiek izmantots, lai atrastu un aizstātu teksta saturu.

Šajā rokasgrāmatā mēs parādīsim jaunu rindiņu aizstāšanu ar atstarpi, izmantojot sed.

Sed izmantošana teksta aizstāšanai

Vispirms apskatīsim pamata atrašanas un aizstāšanas veikšanu, izmantojot sed. Tāda pati metode tiks izmantota, aizstājot jaunas rindiņas ar atstarpēm ar dažām papildu opcijām. Komandu struktūra ir šāda:







$ sed -e 's///'

Apskatiet šādu komandu:



$ atbalss 'ātrā brūnā lapsa' | sed -e 's/quick/fast/g'



Echo komanda izdrukā virkni uz STDOUT . STDOUT straume ir tad cauruļu uz sed. Mēs esam uzdevuši sed aizstāt jebkuru ātri aizvietojamu gadījumu ar ātru. Visbeidzot, izvade tiek izdrukāta uz ekrāna.





Jaunrindu aizstāšana ar atstarpi

Demonstrācijai esmu izveidojis šādu teksta failu test.txt ar vairāku fiktīvu saturu:

$ cat test.txt



Komanda sed pieņem regulāras izteiksmes dažādu modeļu aprakstīšanai. Izmantojot šo funkciju, mēs aprakstīsim jauno rindiņu kā \n. Mēģināsim aizstāt jaunās rindiņas ar atstarpēm:

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

Tomēr tas nedarbojās, kā gaidīts. Lai sasniegtu šo mērķi, mums ir vajadzīgas dažas papildu iespējas. Apskatiet šādu komandu:

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

Komandai sed ir vairākas sadaļas; katrs apzīmē konkrētu uzdevumu:

  • :a: izveido etiķeti 'a'
  • N: pievieno nākamo rindiņu raksta vietai
  • $!ba: ja nav pēdējā rindiņa, atgriežas pie etiķetes “a”
  • s/\n/ /g: atrod un aizstāj jaunu rindiņu (\n) ar atstarpi (/ /). Modelis ir saskaņots globāli (/g)

Komandā sed tiek veiktas darbības, līdz tā sasniedz pēdējo rindiņu, visas \n rakstzīmes aizstājot ar atstarpi.

Šīs sarežģītās komandas vietā mēs varam vienkāršot lietas, izmantojot karogu -z, kas norāda sed darbam ar nulles atdalītiem ierakstiem. Komanda izskatītos šādi:

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

Alternatīvās metodes

Lai gan sed var lieliski veikt uzdevumu, ir daži alternatīvi rīki. Šajā sadaļā mēs īsi apskatīsim dažus no tiem.

Nākamajā piemērā mēs varam izmantot komandu tr, lai vienkāršā veidā aizstātu jauno rindiņu ar atstarpi:

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

Mēs varam arī izmantot perl, lai veiktu darbu. Arī šī sintakse ir līdzīga tai, ko izmantojām ar sed (bet vienkāršota):

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

Vēl viens veids, kā aizstāt jaunas rindiņas ar atstarpēm, ir izmantot komandu paste. Ņemiet vērā, ka tas var noņemt tikai vienu rakstzīmi:

$ paste -s -d ' ' test.txt

Līdzīgi kā sed, Linux ir aprīkots ar citu rīku awk. Līdzīgi kā sed, tas var veikt arī dažas uzlabotas ievades nomaiņas. Mūsu vajadzībām izmantojiet šo awk komandu:

$ awk 1 ORS=' ' test.txt

Secinājums

Šajā rokasgrāmatā tika pētīts, kā jauno rindiņu var aizstāt ar atstarpi, izmantojot sed. Tas tika sasniegts divos dažādos veidos. Šajā rokasgrāmatā ir iekļauti arī citi atbilstoši rīki, kurus mēs varam izmantot, lai aizstātu rindiņu ar atstarpi.

Tā vietā, lai izmantotu sarežģītas komandas, kuras ir grūti iegaumēt, mēs izmantojam Bash skriptu, lai veiktu daudzas darbības operētājsistēmā Linux. Lai gan tas maksā zināmu veiktspēju, elastība un lietojamība ir tā vērta. Uzziniet vairāk par Bash skriptēšana iesācējiem .