LFCS: Giunsa paggamit ang GNU sed Command sa Paghimo, Pag-edit, ug Pagmaniobra sa mga file sa Linux - Bahin 1


Gipahibalo sa Linux Foundation ang LFCS (Linux Foundation Certified Sysadmin) nga sertipikasyon, usa ka bag-ong programa nga nagtumong sa pagtabang sa mga indibidwal sa tibuok kalibutan nga makakuha og sertipikasyon sa batakan ngadto sa intermediate nga mga buluhaton sa pagdumala sa sistema alang sa mga sistema sa Linux. Naglakip kini sa pagsuporta sa mga sistema ug serbisyo nga nagdagan, kauban ang una nga pag-troubleshoot ug pagtuki, ug maalamon nga paghimog desisyon aron madugangan ang mga isyu sa mga team sa engineering.

Palihug tan-awa ang mosunod nga video nga nagpakita bahin sa The Linux Foundation Certification Program.

Ang serye mag-ulohan og Preparation for the LFCS (Linux Foundation Certified Sysadmin) Parts 1 hangtod 10 ug tabonan ang mosunod nga mga topiko para sa Ubuntu, CentOS, ug openSUSE:

Kini nga post mao ang Bahin 1 sa usa ka serye sa 20-tutorial, nga magsakup sa kinahanglan nga mga dominyo ug mga kahanas nga gikinahanglan alang sa eksaminasyon sa sertipikasyon sa LFCS. Ingon niana, sugdi ang imong terminal, ug magsugod kita.

Pagproseso sa Text Stream sa Linux

Gitratar sa Linux ang input ug ang output gikan sa mga programa isip mga sapa (o mga han-ay) sa mga karakter. Aron masugdan ang pagsabut sa redirection ug mga tubo, kinahanglan una natong masabtan ang tulo ka labing importante nga matang sa I/O (Input and Output) nga mga sapa, nga sa pagkatinuod espesyal nga mga file (pinaagi sa kombensiyon sa UNIX ug Linux, data streams ug peripheral, o device files, Gitratar usab nga ordinaryo nga mga file).

Ang kalainan tali sa > (redirection operator) ug | (pipeline operator) mao nga samtang ang una nagkonektar sa usa ka command sa usa ka file, ang ulahi nagkonektar sa output sa usa ka command sa lain. sugo.

# command > file
# command1 | command2

Tungod kay ang operator sa pag-redirect nagmugna o nag-overwrite sa mga file sa hilom, kinahanglan naton kini gamiton sa labi nga pag-amping, ug dili gyud kini masayop sa pipeline. Usa ka bentaha sa mga tubo sa Linux ug UNIX nga mga sistema mao nga walay intermediate file nga nalangkit sa usa ka tubo - ang stdout sa unang command wala gisulat sa usa ka file ug dayon gibasa sa ikaduhang command.

Alang sa mosunod nga mga pagbansaybansay atong gamiton ang balak nga \Usa ka malipayong bata (anonymous author).

Ang ngalan nga sed mubo alang sa stream editor. Para sa mga dili pamilyar sa termino, ang usa ka stream editor gigamit sa paghimo sa mga batakang pagbag-o sa teksto sa usa ka input stream (usa ka file o input gikan sa usa ka pipeline).

Ang labing sukaranan (ug popular) nga paggamit sa sed mao ang pag-ilis sa mga karakter. Magsugod kita pinaagi sa pagbag-o sa matag panghitabo sa gamay nga y ngadto sa UPPERCASE Y ug pag-redirect sa output ngadto sa ahappychild2.txt. Ang g nga bandera nagpakita nga ang sed kinahanglan nga mohimo sa pagpuli sa tanang higayon sa termino sa matag linya sa file. Kung kini nga bandera wala iapil, ang sed mopuli lamang sa unang panghitabo sa termino sa matag linya.

# sed ‘s/term/replacement/flag’ file
# sed ‘s/y/Y/g’ ahappychild.txt > ahappychild2.txt

Kung gusto nimo pangitaon o ilisan ang usa ka espesyal nga karakter (sama sa /, \, &) kinahanglan nimo nga likayan kini, sa termino o puli nga mga kuwerdas, nga adunay atraso nga laslas.

Pananglitan, atong ilisan ang pulong ug alang sa usa ka ampersand. Sa samang higayon, atong pulihan ang pulong Ako og Ikaw kon ang una makit-an sa sinugdanan sa linya.

# sed 's/and/\&/g;s/^I/You/g' ahappychild.txt

Sa ibabaw nga sugo, ang ^ (caret sign) kay ilado nga regular nga ekspresyon nga gigamit sa pagrepresentar sa sinugdanan sa linya.

Sama sa imong makita, mahimo natong ikombinar ang duha o labaw pa nga mga substitution nga mga sugo (ug gamiton ang regular nga mga ekspresyon sa sulod niini) pinaagi sa pagbulag kanila sa usa ka semicolon ug paglakip sa set sulod sa usa ka kinutlo.

Ang laing paggamit sa sed mao ang pagpakita (o pagtangtang) sa pinili nga bahin sa usa ka file. Sa mosunod nga pananglitan, among ipakita ang unang 5 ka linya sa /var/log/messages gikan sa Hunyo 8.

# sed -n '/^Jun  8/ p' /var/log/messages | sed -n 1,5p

Timan-i nga pinaagi sa default, ang sed nag-imprinta sa matag linya. Mahimo natong i-override kini nga kinaiya gamit ang -n nga opsyon ug dayon sultihi si sed nga i-print (gipakita sa p) lamang ang bahin sa file (o ang pipe) nga mohaum sa pattern (Hunyo 8 sa sinugdanan sa linya sa unang kaso ug linya 1 hangtod 5 lakip sa ikaduhang kaso).

Sa katapusan, kini mahimong mapuslanon samtang nag-inspeksyon sa mga script o mga file sa pag-configure aron masusi ang code mismo ug ibilin ang mga komento. Ang mosunod nga sed one-liner motangtang (d) blangko nga mga linya o kadtong nagsugod sa # (ang | nga karakter nagpaila ug boolean OR tali sa duha ka regular mga ekspresyon).

# sed '/^#\|^$/d' apache2.conf

Ang uniq nga sugo nagtugot kanamo sa pagtaho o pagtangtang sa mga duplicate nga linya sa usa ka payl, pagsulat sa stdout pinaagi sa default. Kinahanglan natong timan-an nga ang uniq dili makamatikod sa gibalikbalik nga mga linya gawas kon kini kasikbit. Busa, ang uniq kasagarang gigamit uban sa nag-una nga sort (nga gigamit sa paghan-ay sa mga linya sa text files). Sa kasagaran, ang sort magkuha sa unang field (gibulag sa mga espasyo) isip key field. Aron matino ang lain nga yawe nga field, kinahanglan natong gamiton ang -k nga opsyon.

Ang du –sch /path/to/directory/* nga sugo nagbalik sa paggamit sa espasyo sa disk kada subdirektoryo ug mga file sulod sa espesipikong direktoryo sa pormat nga mabasa sa tawo (nagpakita usab ug total kada direktoryo), ug dili pag-order sa output pinaagi sa gidak-on, apan pinaagi sa subdirectory ug ngalan sa file. Mahimo natong gamiton ang mosunod nga sugo sa paghan-ay sa gidak-on.

# du -sch /var/* | sort –h

Mahimo nimong ihap ang gidaghanon sa mga panghitabo sa usa ka log pinaagi sa petsa pinaagi sa pagsulti sa uniq sa paghimo sa pagtandi gamit ang unang 6 ka karakter (-w 6) sa matag linya (diin ang petsa gipiho), ug prefix sa matag linya. linya sa output pinaagi sa gidaghanon sa mga panghitabo (-c) uban sa mosunod nga sugo.

# cat /var/log/mail.log | uniq -c -w 6

Sa kataposan, mahimo nimong ikombinar ang sort ug uniq (sama sa kasagaran). Binagbinaga ang masunod nga file nga may listahan sang mga nagdonar, petsa sang donasyon, kag kantidad. Ibutang ta nga gusto natong mahibal-an kung pila ang talagsaon nga mga donor. Gamiton namo ang mosunod nga sugo sa pagputol sa unang field (ang mga field gilimitahan sa colon), paghan-ay sa ngalan, ug pagtangtang sa mga duplicate nga linya.

# cat sortuniq.txt | cut -d: -f1 | sort | uniq

Basaha Usab: 13 iring Mga Ehemplo sa Sugo

Ang grep nangita sa mga text file o (command output) alang sa pagtungha sa usa ka piho nga regular nga ekspresyon ug nagpagawas sa bisan unsang linya nga adunay tugma sa standard nga output.

Ipakita ang impormasyon gikan sa /etc/passwd para sa user nga gacanepa, wala magtagad sa kaso.

# grep -i gacanepa /etc/passwd

Ipakita ang tanang sulod sa /etc kansang ngalan nagsugod sa rc gisundan sa bisag unsang numero.

# ls -l /etc | grep rc[0-9]

Basaha Usab: 12 grep Mga Ehemplo sa Sugo

Ang tr nga sugo mahimong gamiton sa paghubad (pag-usab) o pagtangtang sa mga karakter gikan sa stdin, ug isulat ang resulta sa stdout.

Usba ang tanang lowercase ngadto sa uppercase sa sortuniq.txt file.

# cat sortuniq.txt | tr [:lower:] [:upper:]

Ipislit ang delimiter sa output sa ls –l ngadto sa usa lang ka luna.

# ls -l | tr -s ' '

Ang cut command nagkuha sa mga bahin sa input lines (gikan sa stdin o files) ug nagpakita sa resulta sa standard output, base sa gidaghanon sa bytes (-b option), characters (< b>-c), o mga field (-f). Niining kataposang kaso (base sa mga field), ang default field separator kay usa ka tab, pero lain nga delimiter mahimong matino pinaagi sa paggamit sa -d nga opsyon.

I-extract ang user accounts ug ang default shells nga gi-assign kanila gikan sa /etc/passwd (ang –d nga opsyon nagtugot kanamo sa pagtino sa field delimiter, ug ang –f switch nagpaila kung unsang (mga) field ang makuha.

# cat /etc/passwd | cut -d: -f1,7

Sa pagsumaryo, maghimo kita og text stream nga naglangkob sa una ug ikatulo nga dili blangko nga mga file sa output sa katapusan nga sugo. Gamiton namo ang grep isip unang filter aron masusi ang mga sesyon sa user gacanepa, dayon ipislit ang mga delimiter ngadto sa usa lang ka luna (tr -s ' ' ). Sunod, among kuhaan ang una ug ikatulo nga mga field nga adunay cut, ug sa katapusan paghan-ay sa ikaduhang field (mga IP address niini nga kaso) nga nagpakita nga talagsaon.

# last | grep gacanepa | tr -s ' ' | cut -d' ' -f1,3 | sort -k2 | uniq

Ang sugo sa ibabaw nagpakita kon sa unsang paagi ang daghang mga sugo ug mga tubo mahimong ikombinar aron makakuha ug nasala nga datos sumala sa atong mga tinguha. Mobati nga gawasnon nga ipadagan usab kini pinaagi sa mga bahin, aron matabangan ka nga makita ang output nga gi-pipeline gikan sa usa ka mando hangtod sa sunod (mahimo kini nga usa ka maayo nga kasinatian sa pagkat-on, sa paagi!).

Summary

Bisan tuod kini nga panig-ingnan (uban sa uban nga mga panig-ingnan sa kasamtangan nga tutorial) ingon og dili kaayo mapuslanon sa unang pagtan-aw, kini usa ka nindot nga punto sa pagsugod sa pagsugod sa pag-eksperimento sa mga sugo nga gigamit sa paghimo, pag-edit, ug pagmaniobra sa mga file gikan sa Linux. command line. Mobati nga gawasnon nga ibilin ang imong mga pangutana ug komento sa ubos - sila mapasalamaton kaayo!

  1. Bahin sa LFCS
  2. Nganong magkuha ug Linux Foundation Certification?
  3. Pagrehistro para sa eksaminasyon sa LFCS