Wܪk (Regular Expression, RE, κ٬`Wܪk)OzL@ǯSrƦCAΥHyjM/N/Rz@CΦhCrrA
²檺AWܪkNOΦbrꪺBzW@yܦzCWܪkäO@Ӥu{A
ӬO@ӦrBzзǨ̾ڡApGzQnHWܪk觋BzrANonϥΤ䴩Wܪku{~A
ou{ܦhAҦp vi, sed, awk C WܪktκzӻbOܭnI]tη|ͫܦhTAoǰTnȬOiA ɡAziHzLWܪk\ӱNnT^XӡAòͫKd\²ƺzy{C~A ܦhM˳n]䴩WܪkRAҦplALo(LoUH)NOܭn@ӨҤlC ҥHAz̦nnAѥWܪkޯAbӺzDɡA~²Bzz`ưȡI G`ϥΪ̻ݭnh[mߡA]ثeܦhMOϥΥWܪkӹFyLoBRzتA FӥDzKQʡAϥΪ̦ܤ֭nݪWܪkNqI |
AѤF Linux O (BASH) åBxF
vim A۫HAVLrPOUFͤFaH
UӡAUn}lФ@ӫܭn[ANOҿתyWܪk
(Regular Expression)zoI
@Ӧg窥tκzA|iDAGyWܪkuOnIz ܭnOH]`ͬNϥΪڡI|ӨҤlӻA bA`ϥ vim @ѳBzε{gɨϥΨ쪺yjM/Nz\A o|ʭn@}GANontXWܪkӳBzoI
²檺AWܪkNOBzrꪺkALOH欰ӶirꪺBz欰A WܪkzL@ǯSŸUAiHϥΪ̻FyjM/R/NzYSwrꪺBz{ǡI
|ҨӻAڥuQ VBird(eӤjgr) Vbird(Ȧ@Ӥjgr) oӦrˡAOnLr (Ҧp VBIRD, vbird ݭn)AӦpzHpGbSWܪkҤ(Ҧp MS word)AAγ\NonϥΩjpgkA Ϊ̬OOH VBird Vbird jMMCOAjpgi|jM VBIRD/vbird/VbIrD ݭnrӳyxZC
A|Өtα`ҤlnFA]po{tΦb}ɭԡAѬO|X{@ mail {~A Ӷ}L{{dzOb /etc/init.d/ UA]NOAbӥؿUYɮפ㦳 mail orAAQnNɮXӶid߭ק諸ʧ@CɧAXӧtorɮסH AMiH@ɮפ@ɮת}ҡAMhjM mail orAuO.....ӥؿUɮץiण 100 ӻ pGAѥWܪkޥAun@ONXӰաGygrep 'mail' /etc/init.d/*z grep NO䴩Wܪku{@Ip²aI
ͨo̴Noni@BFAWܪkWO@ءyܪkzA unu{䴩oتܪkAӤu{NiHΨӧ@WܪkrBzΡC Ҧp vi, grep, awk ,sed uA]o̦䴩WܪkA ҥHAoǤuNiHϥΥWܪkSrӶirꪺBzCҦp cp, ls Oå䴩WܪkA ҥHNuϥ bash ۤvUΦrӤwC
ڻݭnDzߥWܪkOH@ϥΪ̨ӻAѩϥΨ쥿Wܪk|iणhA ]PLyOALAtκzAӻAWܪkhO@ӡyiǪnFIz OHѩtΦpGbcpUACѲͪTT|hALkQaBA ӧڭ̤]DAtΪy~Tnɮ (ĤQE)z eOFtβͪҦTAMAo]tAtάO_QyJIzOơC
OtΪƶqӤjFAntκzACѥhݳohTơA qdʦ檺Ƹ̭X@榳DTAOΦײhݡAQƱI oӮɭԡAڭ̴NiHzLyWܪkz\ANoǵnTiBzA ȨXyDzTӶiRAIp@ӡAAtκzu@N| yֱּooFzڡIMAWܪkuI٤AA@w{תAѤAA|RWLI
WܪkFiHtκzzDKQ~AƹWAѩWܪkjjrBzOA ثe@n鳣䴩WܪkOI̱`NOylAzաI
pGAdNںWAӤo{Aثeyj먮D]@NOyU/siHzFA ӦpGڭ̥iHbAݡANNoǰDl篑ܡAΤݴN|֫ܦhnWeӷlFC p篑siHOHѩsiHXG@wDΪ̬OeA]A unCӫHɡANӫHDPeiSrꪺAo{}HNH篑I KIoӤu@FڡHNϥΥWܪkڡIثejlAn sendmail P postfix HΤ䴩lARnA䴩Wܪk\I
M٤աAܦhAn鳣䴩WܪkOIMA MUan鳣䴩LALAoǡyrz٬Oݭntκzӥ[JWhA ҥHաItκzAAFۨu@HΥΤݪݨDA WܪkbOܻݭn]ܭȱoDzߪ@uOI
bAڭ̦bǼƾǪɭԡA@ӫܭnBOFO@wnyIzA NOEEkAI\FAӦbƾΪ~WAuO@|ڡI oӤEEkڭ̦bpǪɭԴXGIF@~~IUӡAäOonIOI LoO¦¦IA{b@wf۷hO ^_^I
ӧڭ̽ͨ쪺oӥWܪkAPe@ BASH NIOƾǪEEk@ˡAO Linux ¦¦AM]OA LApGǦFA@wOyjjUzIoNnOep̭ǪZGGߡI qGߤAZ\ߨ覨IҥHաA OtΪ{ѻPtΪzALܴΪUڡIЦnnDz߳oӰ¦aI ^_^
IWܪk٦HSIWܪkrܤ觋̷ӤPYԫצӤG ¦WܪkPWܪkCWܪkF²檺@զrBz~A٥iH@sժrBzA ҦpijM VBird netman lman jMA`NAOy(or)zӤOyM(and)zBzA ɴNݭnWܪkUաIǥѯSy ( zPy | zrUA NFo˪تILAڭ̦bo̥DOȬOг̰¦¦WܪkӤwաInաIMMḀΥ\hoI
JMWܪkOBzrꪺ@تܤ觋ArƧǦvTytƴN|勵WܪkGvTI
~AWܪk]ݭn䴩u{ӻU~IҥHAڭ̳o̴NФ@ӳ²檺r^\u{ANO grep oI
e@wgйL grep ﶵPѼơAۭbi grep ﶵoI
Ч grep \धANiJWܪkSrŪBzOFC
ytƷ|vT쥿WܪkXGOHڭ̦bĹspתrsXṱͨAɮרOȦ 0 P 1Aڭ̬ݨ쪺rrPƦrOzLsXഫӪCѩPytsXƨäۦPAҥHN|y^GtFC |ҨӻAb^jpgsXǤAzh_TW.big5 C oػytXGOpUG
WǬOsXǡAڭ̥iHܲMo{oػytNO@ˡIpGAQn^jgrӨϥ [A-Z] ɡA |o{ LANG=C TiHȮjgr (]Os) AOpG LANG=zh_TW.big5 ɡAN|o{A sPpg b-z ]|Q^XӡI]NsXǨӬݡA big5 ytiH^y A b B c C ... z Z zo@rI ҥHAϥΥWܪkɡAݭnSOdNҪytA _hi|o{POHۦP^GI
ѩ@ڭ̦bmߥWܪkɡAϥΪOۮe POSIX зǡA]NϥΡy C zoӻyt(1)I ]AUܦhm߳OϥΡy LANG=C zoӻytƨӶiI t~AFnקKo˽sXҳy^PƦr^DA]ǯSŸڭ̱onAѤ@UI oDzŸDnUoǷNqG(1)
SŸ | NNq |
[:alnum:] | N^jpgrμƦrAY 0-9, A-Z, a-z |
[:alpha:] | N^jpgrAY A-Z, a-z |
[:blank:] | NťP [Tab] |
[:cntrl:] | NLWAY]A CR, LF, Tab, Del.. |
[:digit:] | NƦrӤwAY 0-9 |
[:graph:] | Fťզr (ťP [Tab] ) ~LҦ |
[:lower:] | NpgrAY a-z |
[:print:] | NiHQCLXӪr |
[:punct:] | NIŸ (punctuation symbol)AYG" ' ? ! ; : # $... |
[:upper:] | NjgrAY A-Z |
[:space:] | |ͪťժrA]Ať, [Tab], CR |
[:xdigit:] | N 16 i쪺ƦrA]]AG 0-9, A-F, a-f ƦrPr |
רW[:alnum:], [:alpha:], [:upper:], [:lower:], [:digit:] oXӤ@wnDNNA]Ln a-z A-Z γ~nTwܡInFAUNڭ̶}lӪi grep aI
ڭ̦bĤQ@ BASH ̭ grep ͽL@ǰ¦ΪkA grep ٦֪iΪkIUڭ̶ȦCXi grep ﶵPѼƵjaѦҡA ¦ grep ΪkаѦҫe@oI
[root@www ~]# grep [-A] [-B] [--color=auto] 'jMr' filename ﶵPѼơG -A G᭱i[ƦrA after NAFCXӦ~A n ]CXӡF -B G᭱i[ƦrA befer NAFCXӦ~Ae n ]CXӡF --color=auto iNT^ƦCXC dҤ@G dmesg CX֤߰TAAH grep Xt eth [root@www ~]# dmesg | grep 'eth' eth0: RealTek RTL8139 at 0xee846000, 00:90:cc:a6:34:84, IRQ 10 eth0: Identified 8139 chip type 'RTL-8139C' eth0: link up, 100Mbps, full-duplex, lpa 0xC5E1 eth0: no IPv6 routers present # dmesg iCX֤߲ͪTIzL grep ^dT (eth) A # Nio{pWTCLS渹PSCܡIݬݤUӽdҧaI dҤGGӤWDAnN쪺rAB[W渹ӪܡG [root@www ~]# dmesg | grep -n --color=auto 'eth' 247:eth0: RealTek RTL8139 at 0xee846000, 00:90:cc:a6:34:84, IRQ 10 248:eth0: Identified 8139 chip type 'RTL-8139C' 294:eth0: link up, 100Mbps, full-duplex, lpa 0xC5E1 305:eth0: no IPv6 routers present # A|o{F eth |SCӪܤ~A̫e٦渹I dҤTGӤWDAbrҦb檺ePT]@_X [root@www ~]# dmesg | grep -n -A3 -B2 --color=auto 'eth' 245-PCI: setting IRQ 10 as level-triggered 246-ACPI: PCI Interrupt 0000:00:0e.0[A] -> Link [LNKB] ... 247:eth0: RealTek RTL8139 at 0xee846000, 00:90:cc:a6:34:84, IRQ 10 248:eth0: Identified 8139 chip type 'RTL-8139C' 249-input: PC Speaker as /class/input/input2 250-ACPI: PCI Interrupt 0000:00:01.4[B] -> Link [LNKB] ... 251-hdb: ATAPI 48X DVD-ROM DVD-R-RAM CD-R/RW drive, 2048kB Cache, UDMA(66) # pWҥܡAA|o{r 247 Ҧbe 248 T]QܥXӡI # o˥iHANreƮXӶiRաI |
grep O@ӫܱ`]ܱ`ΪOAḼn\NOirƪAMNŦXϥΪ̻ݨDrCLXӡC ݭnOygrep bƤdM@ӦrɡAOH "" Ӷiƪ^Iz]NOAp@ɮפ 10 A𫟺㦳AҷjMrAhNܦbùWALNFI
brܤ譱Agrep iHϥ --color=auto ӱNrϥCܡC oiOӫܤ\ڡIOpGCϥ grep onۦ[W --color=auto S㪺ܳ·С ɨӦnΪ alias NoӳBz@UաIAiHb ~/.bashrc [WoGyalias grep='grep --color=auto'zAHy source ~/.bashrc zӥߧYͮħYiI o˨C grep L|۰A[WCܰաI
nAѥWܪk²檺kNOѹڽmߥhPաIҥHbJ㥿WܪkSŸeA ڭ̥HUoɮתeӶi楿WܪkzѧaI@UAUmߤjeOG
ܩmߥɮХѩUsӤUCݭnSO`NOAUoɮOb MS Windows tΤUs𫍧A åBwgSBzLA]ALMO¤rɡAOt@ Windows tΤUn``ۦ[J@ǯSrAҦp_r (^M) NO@ҡI ҥHAAiHNUrH vi xs regular_express.txt oɮסA LA٬OijIUsG
https://vbird.org.cn/linux_basic/0330regularex/regular_express.txt
pGA Linux iHsW Internet ܡAϥΦpUOӮYiG
wget https://vbird.org.cn/linux_basic/0330regularex/regular_express.txt
ܩoɮתepUG
[root@www ~]# vi regular_express.txt
"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn't fit me.
However, this dress is about $ 3183 dollars.^M
GNU is free air not free beer.^M
Her hair is very beauty.^M
I can't finish the test.^M
Oh! The soup taste good.^M
motorcycle is cheap than car.
This window is clear.
the symbol '*' is represented as start.
Oh! My god!
The gd software is a library for drafting programs.^M
You are the best is mean you are the no. 1.
The world <Happy> is the same with "glad".
I like dog.
google is the best tools for search keyword.
goooooogle yes!
go! go! Let's go.
# I am VBird
|
oɮצ@ 22 A̩U@欰ťզI{b}lڭ̤@ӮרҤ@ӮרҪӤЧaI
jMSwr²aH]ڭ̭nq𫍧ɮo the oӯSwrA²檺觋NOoˡG
[root@www ~]# grep -n 'the' regular_express.txt 8:I can't finish the test. 12:the symbol '*' is represented as start. 15:You are the best is mean you are the no. 1. 16:The world <Happy> is the same with "glad". 18:google is the best tools for search keyword. |
pGQnyϦVzOH]NOAӦS 'the' oӦrɤ~ܦbùWANϥΡG
[root@www ~]# grep -vn 'the' regular_express.txt
|
A|o{AùWX{CF 8,12,15,16,18 椧~LCI UӡApGAQnoפjpg the oӦrAhG
[root@www ~]# grep -in 'the' regular_express.txt 8:I can't finish the test. 9:Oh! The soup taste good. 12:the symbol '*' is represented as start. 14:The gd software is a library for drafting programs. 15:You are the best is mean you are the no. 1. 16:The world <Happy> is the same with "glad". 18:google is the best tools for search keyword. |
Fh (9, 14) ~A 16 ]hF@ The rQ^I
pGڷQnjM test taste oӳrɡAiHo{Ao̦@q 't?st' sboӮɭԡAڥiHo˨ӷjMG
[root@www ~]# grep -n 't[ae]st' regular_express.txt 8:I can't finish the test. 9:Oh! The soup taste good. |
AѤFaH [] ̭צXӦrALԥNYy@ӡzrA ҥHAWҤlFAڻݭnrOytastzΡytestzӦrӤwI ӦpGQnjM즳 oo rɡAhϥΡG
[root@www ~]# grep -n 'oo' regular_express.txt 1:"Open Source" is a good mechanism to develop programs. 2:apple is my favorite food. 3:Football game is not use feet only. 9:Oh! The soup taste good. 18:google is the best tools for search keyword. 19:goooooogle yes! |
OApGڤQn oo e g ܩOHɡAiHQΦbXrϦV [^] ӹFG
[root@www ~]# grep -n '[^g]oo' regular_express.txt 2:apple is my favorite food. 3:Football game is not use feet only. 18:google is the best tools for search keyword. 19:goooooogle yes! |
NNOAڻݭnO oo AO oo eO g NOFIJӤWӪAp|o{A 1,9 椣FA] oo eX{F g ҭPI 2,3 SðݡA] foo P Foo iQIO 18 google goo ڡOѰOFA]Ӧ᭱X{F tool too ڡIҥHӦ]QCXӡ ]NOA 18 ̭MX{Fڭ̩Ҥn (goo) Oѩݭn (too) A ]AOŦXrjMI
ܩ 19 AP˪A] goooooogle ̭ oo eiO o AҦpG go(ooo)oogle AҥHAo@]OŦXݨDI
AӡA] oo eQnpgrAҥHAڥiHo˼g [^abcd....z]oo A Oo˦GKAѩpgr ASCII WsXǬOsA ]Aڭ̥iHN²ƬUoˡG
[root@www ~]# grep -n '[^a-z]oo' regular_express.txt 3:Football game is not use feet only. |
]NOAڭ̦b@նXrApGӦrլOsAҦpjg^/pg^/ƦrA NiHϥ[a-z],[A-Z],[0-9]觋ӮѼgApGڭ̪nDrOƦrP^OH INNLgb@_AܦG[a-zA-Z0-9]CҦpAڭ̭noƦr@ANoˡG
[root@www ~]# grep -n '[0-9]' regular_express.txt 5:However, this dress is about $ 3183 dollars. 15:You are the best is mean you are the no. 1. |
ѩҼ{ytsXǪvTA]FssXϥδy - z~A A]iHϥΦpUkӨoeӴժGG
[root@www ~]# grep -n '[^[:lower:]]oo' regular_express.txt # [:lower:] NNO a-z NIаѦҫep` [root@www ~]# grep -n '[[:digit:]]' regular_express.txt |
o˹ [] H [^] H [] - A٦e洣쪺SrAѤFܡH^_^I
ڭ̦bD@AiHdߨ@r̭ the ApGڷQn the ub歺CXOH oӮɭԴNonϥΩwrFIڭ̥iHo˰G
[root@www ~]# grep -n '^the' regular_express.txt 12:the symbol '*' is represented as start. |
ɡANuѤU 12 A]u 12 檺歺O the }Yڡ㦹~A pGڷQn}YOpgr@NCXOHiHoˡG
[root@www ~]# grep -n '^[a-z]' regular_express.txt 2:apple is my favorite food. 4:this dress doesn't fit me. 10:motorcycle is cheap than car. 12:the symbol '*' is represented as start. 18:google is the best tools for search keyword. 19:goooooogle yes! 20:go! go! Let's go. |
AiHo{ڭ̥iHĤ@ӦrOjgIuL grep CXruĤ@ӦrA grep OCX@Ӧr (word) IP˪AWO]iHΦpU觋ӨNG
[root@www ~]# grep -n '^[[:lower:]]' regular_express.txt
|
nIpGڤQn}YO^rAhiHOoˡG
[root@www ~]# grep -n '^[^a-zA-Z]' regular_express.txt 1:"Open Source" is a good mechanism to develop programs. 21:# I am VBird # O]iHOG grep -n '^[^[:alpha:]]' regular_express.txt |
`NFaH ^ ŸAbrXŸ(A[])P~OPI b [] NyϦVܡzAb [] ~hNwb歺NqInMI ϹLӫҡApGڷQnXӡApI (.) @AӦpBzG
[root@www ~]# grep -n '\.$' regular_express.txt 1:"Open Source" is a good mechanism to develop programs. 2:apple is my favorite food. 3:Football game is not use feet only. 4:this dress doesn't fit me. 10:motorcycle is cheap than car. 11:This window is clear. 12:the symbol '*' is represented as start. 15:You are the best is mean you are the no. 1. 16:The world <Happy> is the same with "glad". 17:I like dog. 18:google is the best tools for search keyword. 20:go! go! Let's go. |
SO`NA]pI㦳LNq(U|)AҥHnϥθr(\)ӥ[HѰSNqI LAAγ\|ıo_ǡAO 5~9 ̫᭱]O . ڡLkCLXӡH o̴NoA Windows xn_rP_DFIڭ̨ϥ cat -A NĤ殳XӬݡA A|o{G
[root@www ~]# cat -An regular_express.txt | head -n 10 | tail -n 6 5 However, this dress is about $ 3183 dollars.^M$ 6 GNU is free air not free beer.^M$ 7 Her hair is very beauty.^M$ 8 I can't finish the test.^M$ 9 Oh! The soup taste good.^M$ 10 motorcycle is cheap than car.$ |
ڭ̦bĤQͨL_rb Linux P Windows WtA bW椤ڭ̥iHo{ 5~9 欰 Windows _r (^M$) Aӥ` Linux ӶȦ 10 ܪ ($) CҥHoA . ۵MNOb $ eI]N 5~9 FIo˥iHA ^ P $ NqܡH nFAnݩUѵAۤvQ@QApGڷQnXӡA@OyťզzA ]NOAӦèSJơAӦpjMH
[root@www ~]# grep -n '^$' regular_express.txt
22:
|
]u歺 (^$)AҥHAo˴NiHXťզաIAӡA]AwgDb@ӵ{} (shell script) Ϊ̬O]wɷAťզP}Y # @OѡA]pGAnNƦCXOHѦҮɡA iHNoǸƬٲH`٫OQȱiAAiH@OH ڭ̥H /etc/syslog.conf oɮרӧ@dҡAAiHۦѦҤ@UXGG
[root@www ~]# cat -n /etc/syslog.conf # b CentOS AGiHo{ 33 檺XAܦhťզP # }Y [root@www ~]# grep -v '^$' /etc/syslog.conf | grep -v '^#' # GȦ 10 A𫟺Ĥ@ӡy -v '^$' zNynťզzA # ĤGӡy -v '^#' zNyn}YO # zI |
O_`٫ܦhڡH
bĤQ@ bash Aڭ̪DUΦr * iHΨӥNN(0Φh)rA OWܪkäOUΦrA̤OۦPI ܩWܪky . zhNy靈@ӥNrzNIoӲŸbWܪkNqpUG
onAڭ̪ӽmߧaI]ڻݭnX g??d rAY@|ӦrA _YO g ӵO d AڥiHo˰G
[root@www ~]# grep -n 'g..d' regular_express.txt 1:"Open Source" is a good mechanism to develop programs. 9:Oh! The soup taste good. 16:The world <Happy> is the same with "glad". |
]j g P d @wnsbӦrA]A 13 檺 god P 14 檺 gd N|QCXӰաIAӡApGڷQnCX oo, ooo, oooo ơA ]NOAܤ֭n(t) o HWAӦpOnHO o* ٬O oo* ٬O ooo* OH MAiHլݬݵGA LGӦF @_@ AҥHAڳo̴NC
] * NOy 0 өΦhӫe RE rzNqA ]Ayo*zNOGy֦ŦrΤ@ o HWrzA SO`NA]\Ŧr(NOSriHN)A]Ay grep -n 'o*' regular_express.txt zN|ҦƳCLXӿùWI
pGOyoo*zOHhĤ@ o ֩wnsbAĤG o hOiiLh o A ҥHAZOt o, oo, ooo, oooo AiHQCXӡ
PzAڭ̻ݭnyܤ֨ o HWrzɡANݭn ooo* AYOG
[root@www ~]# grep -n 'ooo*' regular_express.txt 1:"Open Source" is a good mechanism to develop programs. 2:apple is my favorite food. 3:Football game is not use feet only. 9:Oh! The soup taste good. 18:google is the best tools for search keyword. 19:goooooogle yes! |
o˲z * NqFܡHnFA{bXӽmߡApGڷQnr}YPO gAO g ȯsbܤ֤@ o AYO gog, goog, gooog.... AӦpH
[root@www ~]# grep -n 'goo*g' regular_express.txt 18:google is the best tools for search keyword. 19:goooooogle yes! |
pAѤFܡHAӤ@DApGڷQnX g }YP g rAriiLAӦpOnHOyg*gzܡH
[root@www ~]# grep -n 'g*g' regular_express.txt 1:"Open Source" is a good mechanism to develop programs. 3:Football game is not use feet only. 9:Oh! The soup taste good. 13:Oh! My god! 14:The gd software is a library for drafting programs. 16:The world <Happy> is the same with "glad". 17:I like dog. 18:google is the best tools for search keyword. 19:goooooogle yes! 20:go! go! Let's go. |
ժGMX{ohHӸFaH@I]A] g*g ̭ g* NyŦrΤ@ӥHW gz b[W᭱ g A]A RE eNO g, gg, ggg, gggg A ]AunӦ֦@ӥHW g NŦXһݤFI
Ӧpoڭ̪ g....g ݨDOHINQΥN@Ӧry.zڡI YOGyg.*gz@kA] * iHO 0 ΦhӭƫeršA . ONrAҥHG y.* NNsөΦhӥNrzNաI
[root@www ~]# grep -n 'g.*g' regular_express.txt 1:"Open Source" is a good mechanism to develop programs. 14:The gd software is a library for drafting programs. 18:google is the best tools for search keyword. 19:goooooogle yes! 20:go! go! Let's go. |
]ON g }YP g ANriAҥHA 1, 14, 20 OiI o .* RE ܥNrOܱ`AƱjazѨåBxI AX@DApGڷQnXyNƦrzCOH]ȦƦrAҥHNG
[root@www ~]# grep -n '[0-9][0-9]*' regular_express.txt 5:However, this dress is about $ 3183 dollars. 15:You are the best is mean you are the no. 1. |
Mϥ grep -n '[0-9]' regular_express.txt ]iHoۦPGA
ƱjazѤWO RE ܪkNq~nI
bWӨDAڭ̥iHQ . P RE rŤ * ӳ]w 0 ӨLhӭƦrA pGڷQn@ӽd϶ƦrƩOH|ҨӻAڷQnXӨ줭 o srAӦp@HoɭԴNonϥΨ쭭wdr {} FC ] { P } Ÿb shell OSNqA]A ڭ̥nϥθr \ LhSNq~C ܩ {} ykOo˪A]ڭn o rAiHOG
[root@www ~]# grep -n 'o\{2\}' regular_express.txt 1:"Open Source" is a good mechanism to develop programs. 2:apple is my favorite food. 3:Football game is not use feet only. 9:Oh! The soup taste good. 18:google is the best tools for search keyword. 19:goooooogle yes! |
oˬݦGP ooo* rŨStڡH] 19 榳h o ¤]X{FI nAӷjMrA]ڭ̭nX g ᭱ 2 5 o AMA@ g rAL|OoˡG
[root@www ~]# grep -n 'go\{2,5\}g' regular_express.txt 18:google is the best tools for search keyword. |
IܦnI 19 שSQΤF(] 19 榳 6 o ڡI)C ApGڷQnO 2 o HW goooo....g OHFiHO gooo*g A]iHOG
[root@www ~]# grep -n 'go\{2,\}g' regular_express.txt 18:google is the best tools for search keyword. 19:goooooogle yes! |
INiHXӰա
gLFWX²檺dҡAڭ̥iHN¦WܪkSrŷJpUG
RE r | NqPd |
^word | NqGݷjMr(word)b歺I dҡGjM歺 # }l@AæCX渹 grep -n '^#' regular_express.txt |
word$ | NqGݷjMr(word)bI dҡGN ! @CLXӡAæCX渹 grep -n '!$' regular_express.txt |
. | NqGNy@w@ӥNrzršI dҡGjMriHO (eve) (eae) (eee) (e e)A Ȧ (ee) IY e P e y@wzȦ@ӦrAӪťզr]OrI grep -n 'e.e' regular_express.txt |
\ | NqGršANSŸSNqhI dҡGjMt ' @I grep -n \' regular_express.txt |
* | NqGƹsӨLahӪe@ RE r dҡGXt (es) (ess) (esss) rA`NA] * iHO 0 ӡAҥH es ]OŦXajMrCt~A] * ơye@ RE ršzŸA ]Ab * enۤ@ RE rųIҦpNrh y.*z I grep -n 'ess*' regular_express.txt |
[list] | NqGrX RE ršA̭CXQn^rI dҡGjMt (gl) (gd) @AݭnSOdNOAb [] yԥN@ӫݷjMrzA Ҧpy a[afl]y zNjMriHO aay, afy, aly Y [afl] N a f l NI grep -n 'g[ld]' regular_express.txt |
[n1-n2] | NqGrX RE ršA̭CXQn^rdI dҡGjMtNƦr@IݯSOdNAbrX [] - OSNqALNӦrҦsrIoӳsP_P ASCII sXA]AAsXݭn]wT(b bash AݭnTw LANG P LANGUAGE ܼƬO_TI) ҦpҦjgrh [A-Z] grep -n '[A-Z]' regular_express.txt |
[^list] | NqGrX RE ršA̭CXnrνdI dҡGjMriHO (oog) (ood) O (oot) A ^ b [] ɡANNqOyϦVܡzNC ҦpAڤnjgrAh [^A-Z]COAݭnSO`NOApGH grep -n [^A-Z] regular_express.txt ӷjMAoo{ɮפҦ泣QCXAH]o [^A-Z] OyDjgrzNA ]C@槡DjgrAҦpĤ@檺 "Open Source" N p,e,n,o.... pgr grep -n 'oo[^t]' regular_express.txt |
\{n,m\} | NqGs n m Ӫye@ RE ršz NqGY \{n\} hOs n Ӫe@ RE ršA NqGYO \{n,\} hOs n ӥHWe@ RE ršI dҡGb g P g 2 Ө 3 Ӫ o sbrAY (goog)(gooog) grep -n 'go\{2,3\}g' regular_express.txt |
AjաGyWܪkSrzP@bOCJOyUΦrzäۦPA ҦpAbUΦr * NOy 0 ~ LhӦrzNAObWܪkA * hOy 0 LahӪe@ RE ršzNϥΪNqäۦPAndVFI
|ҨӻA䴩Wܪk ls oӤu㤤AYڭ̨ϥ yls -l * z NONɦWɮסA yls -l a* zNOH a }YɦWɮסA bWܪkAڭ̭ntH a }YɮסAhnoˡG(ݷft䴩Wܪku)
ls | grep -n '^a.*'
DG
H ls -l tX grep X /etc/ UɮsݩʪɦW
G
ѩ ls -l CXsɮɼY|Oy lrwxrwxrwx zA]ϥΦpUOYiXGG
ls -l /etc | grep '^l'YȷQnCXXɮסAAHy |wc -l z Ӳ֥[BzYiC |
bAѤF@ǥWܪk¦ΤAAөOHӪFiH@ANO sed U|Ъ awk FI oӳåiO۷ΪڡI|ҨӻAg logfile.sh Rnɪp{ (ĤQE|ͨ)AjRrΡBέpANOγo_JڧIAAnn@ڡH^_^
ڭ̥ӽͤ@ sed nFA sed ]O@ӺuROAiHR standard input աI ӥB sed ٥iHNƶiNBRBsWB^Sw浥\OIܤa ڭ̥AѤ@U sed ΪkAAӲLγ~nFI
[root@www ~]# sed [-nefr] [ʧ@] ﶵPѼơG -n GϥΦwR(silent)ҦCb@ sed ΪkAҦӦ STDIN Ƥ@볣|QCXùWCpG[W -n ѼƫAhugL sed SBz@(Ϊ̰ʧ@)~|QCXӡC -e GbOCҦWi sed ʧ@sF -f GN sed ʧ@gb@ɮפA -f filename hiH filename sed ʧ@F -r Gsed ʧ@䴩OWܪkykC(w]O¦Wܪkyk) -i GקŪɮפeAӤOѿùXC ʧ@G [n1[,n2]]function n1, n2 Go|sbA@Nyܶiʧ@ơzA|ҨӻApGڪʧ@ Oݭnb 10 20 椧i檺Ahy 10,20[ʧ@欰] z function UoǩNNG a GsWA a ᭱iHrAӳoǦr|bs@X{(ثeU@) c GNA c ᭱iHrAoǦriHN n1,n2 I d GRA]ORڡAҥH d ᭱q`NNF i GJA i ᭱iHrAӳoǦr|bs@X{(ثeW@)F p GCLAYNYӿܪƦLXCq` p |PѼ sed -n @_B@ s GNAiHiNu@Iq`o s ʧ@iHft WܪkIҦp 1,20s/old/new/g NOաI |
sed OάݪOݤաIҥHSnӽmߤFIӪRPsW\aI
dҤ@GN /etc/passwd eCXåBCL渹APɡAбN 2~5 RI [root@www ~]# nl /etc/passwd | sed '2,5d' 1 root:x:0:0:root:/root:/bin/bash 6 sync:x:5:0:sync:/sbin:/bin/sync 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown .....(᭱ٲ)..... |
ݨFaHsed ʧ@ '2,5d' A d NORI] 2-5 浃LRFAҥHܪƴNS 2-5 o t~A`N@UA쥻ӬOnUF sed -e ~AS -e ]աIPɤ]n`NOA sed ᭱ʧ@AаȥH '' ӳAI
pGDܤƤ@UA|ҨӻApGunR 2 AiHϥΡy nl /etc/passwd | sed '2d' zӹFA ܩYOnR 3 ̫@AhOy nl /etc/passwd | sed '3,$d' zաAry $ zN̫@I
dҤGGӤWDAbĤG(YO[bĤT)[Wydrink tea?zrˡI [root@www ~]# nl /etc/passwd | sed '2a drink tea' 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin drink tea 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin .....(᭱ٲ)..... |
KKIb a ᭱[WrNwNX{bĤG᭱oIpGOnbĤGeOHy nl /etc/passwd | sed '2i drink tea' zNաINONy a zܦy i zYiC W[@²ApGOnWNHWOH
dҤTGbĤG᭱[JrAҦpyDrink tea or .....zPydrink beer?z [root@www ~]# nl /etc/passwd | sed '2a Drink tea or ......\ > drink beer ?' 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin Drink tea or ...... drink beer ? 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin .....(᭱ٲ)..... |
oӽdҪIOyڭ̥iHsWu@IiHsWnXzOC@椧nHϱuy \
zӶis檺W[IҥHAWҤlAڭ̥iHo{bĤ@檺̫᭱N \ sbաIO@wnI
OЦpsWPRApGnNOHݬݩUdҧaG
dҥ|GڷQN2-5檺eNyNo 2-5 numberzOH [root@www ~]# nl /etc/passwd | sed '2,5c No 2-5 number' 1 root:x:0:0:root:/root:/bin/bash No 2-5 number 6 sync:x:5:0:sync:/sbin:/bin/sync .....(᭱ٲ)..... |
zLoӤkڭ̴NNƾNFID`eaIsed ٦nΪFFIڭ̥HeQnCX 11~20 A onzLyhead -n 20 | tail -n 10zkӳBzAܳ·аա sed hiH²檺XAQnXIOzL渹ӮIݬݩUdҥG
dҤGȦCX /etc/passwd ɮפ 5-7 [root@www ~]# nl /etc/passwd | sed -n '5,7p' 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 6 sync:x:5:0:sync:/sbin:/bin/sync 7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown |
WzOӭnﶵy -n zAӻAo -n NOywRҦzI
nϥΦwRҦOHAiHۦUF sed '5,7p' NDF (5-7 |ƿX)I
S[W -n ѼƮɡAXƥiOtܦhIAiHzLo sed H欰쪺ܥ\A
NNY@ɮפYǦ渹XӬd\IܴΪ\IOܡH
F檺BzҦ~A sed ٥iHΦ欰i泡ƪjMèN\I W sed jMPNP vi ۷ILIoˡG
sed 's/nQNr/sr/g' |
WSr骺rAаOUӡIܩTӱuNOs¦rꪺաI ڭ̨ϥΩUoӨo IP ƾڪdҡA@q@qӳBzz@@AAAѤ@UO̩ҿתjMèNaI
BJ@G[lTAQ /sbin/ifconfig d IP H [root@www ~]# /sbin/ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:90:CC:A6:34:84 inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::290:ccff:fea6:3484/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 .....(HUٲ)..... # ]ڭ٨S IP Ao̧AӷYiڡIڭ̪IbĤGA # ]NO 192.168.1.100 @ӤwIQrX@I BJGGQrtX grep ^X䪺@ [root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 # ȳѤU@IUӡAڭ̭nN}l addr: qqRANOUoˡG # inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 # WRby ^.*inet addr: zաIWܪkX{I ^_^ BJTGN IP eHR [root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | \ > sed 's/^.*addr://g' 192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 # JӻPWӨBJ@UAeFIUӫhORAYG # 192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 # ɩһݪWܪkGy Bcast.*$ zNOաI BJ|GN IP ᭱HR [root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | \ > sed 's/^.*addr://g' | sed 's/Bcast.*$//g' 192.168.1.100 |
zLoӽdҪmߤ]ijz̾ڦ@BJӬsAOINO[AMA@h@hհA pG諸aANHקA粒աA\AU~աCHWФA @jONF|ӨBJIaI ^_^
ڭ̦A~s sed PWܪktXmߡI]ڥun MAN sbXơA Ot # bѧڤQnAӥBťզڤ]nIɸӦpBzOHiHzLoXӨBJӹ@ݬݡG
BJ@Gϥ grep Nr MAN ҦbX [root@www ~]# cat /etc/man.config | grep 'MAN' # when MANPATH contains an empty substring), to find out where the cat # MANBIN pathname # MANPATH manpath_element [corresponding_catdir] # MANPATH_MAP path_element manpath_element # MANBIN /usr/local/bin/man # Every automatically generated MANPATH includes these fields MANPATH /usr/man ....(᭱ٲ).... BJGGRѤ᪺ơI [root@www ~]# cat /etc/man.config | grep 'MAN'| sed 's/#.*$//g' MANPATH /usr/man ....(᭱ٲ).... # qWiHݥXӡA쥻ѪƳܦťզաIҥHAUӭnRťզ [root@www ~]# cat /etc/man.config | grep 'MAN'| sed 's/#.*$//g' | \ > sed '/^$/d' MANPATH /usr/man MANPATH /usr/share/man MANPATH /usr/local/man ....(᭱ٲ).... |
AH sed uo˪@ܡHiI sed ƦܥiHקɮתeOIӤϥκuROθƬyɦVI LAѩoӰʧ@|קlɮסAҥHЧAdUnHKtγ]wɨӴճI ڭ٬OϥΧAU regular_express.txt ɮרӴլݬݧaI
dҤGQ sed N regular_express.txt C@浲Y . h ! [root@www ~]# sed -i 's/\.$/\!/g' regular_express.txt # WY -i ﶵiHA sed hק᭱ɮפeӤOѿùXI # oӽdҬOΦbNIбzۦ cat ɮץhd\GoI dҤCGQ sed b regular_express.txt ̫@[Jy# This is a testz [root@www ~]# sed -i '$a # This is a test' regular_express.txt # ѩ $ NO̫@A a ʧ@OsWA]ɮ׳̫sWoI |
sed y -i zﶵiHקɮפeAo\D`UI|ҨӻApGA@ 100 U檺ɮסAAnb 100 [YǤrAɨϥ vim i|ƱI]ɮפӤjFIHNQ sed ڡIzL sed ק/N\AAƦܤݭnϥ vim hqIܴΧaI
`Ao sed ΰաIӥBܦh shell script |ϥΨoӫO\ sed iHUtκzzn`u@InJӪDzߩOI
ƹWA@Ū̥unAѰ¦WܪkjNwg۷FALAYǮɨ謰Fn²ƾӫOާ@A AѤ@UϥνdsWܪkܦ|KOI|²檺ҤlnFAbW`DT̫@ӨҤlAڭ̭nhťզP歺 # CAϥΪO
grep -v '^$' regular_express.txt | grep -v '^#'
ݭnϥΨuROӷjM⦸IpGϥΩWܪkAڭ̥iH²ƬG
egrep -v '^$|^#' regular_express.txt
WܪkiHzLsե\y | zӶi@jMIӦbuNqy orzաI O_ܪ²OH~Agrep w]Ȥ䴩¦WܪkApGnϥΩWܪkAAiHϥ grep -E A Lijϥ egrep IϤOnOСI egrep P grep -E OROOWYաI
xFWܪkAoөWܪkAAӤ]|QANOhXӭnSŸܡH ^_^y OҥHAڭ̴Nӻ@UAWܪkXӯSŸHѩUd٬OϥΨ regular_express.txt AOڭ̥iNɮקLF @_@AҥHAЭsUɮרӽm߳I
RE r | NqPd |
+ | NqGơy@өΤ@ӥHWze@ RE r dҡGjM (god) (good) (goood)... rC o+ Ny@ӥHW o zҥHAU榨G|N 1, 9, 13 CXӡC egrep -n 'go+d' regular_express.txt |
? | NqGysөΤ@ӡze@ RE r dҡGjM (gd) (god) oӦrC o? NyŪ 1 o zҥHAW榨G|N 13, 14 CXӡC So{AoӮר( 'go+d' P 'go?d' )GXP 'go*d' ۦPH QQݡAoOI ^_^ egrep -n 'go?d' regular_express.txt |
| | NqGΩ( or )觋XƭӦr dҡGjM gd good oӦrA`NAOyΡzI ҥHA 1,9,14 oT泣iHQCLXӳIpGٷQnX dog OH egrep -n 'gd|good' regular_express.txt |
() | NqGXysաzr dҡGjM (glad) (good) oӦrA] g P d OƪAҥHA ڴNiHN la P oo C ( ) AåH | Ӥj}ӡANiHաI egrep -n 'g(la|oo)d' regular_express.txt |
()+ | NqGhӭƸsժPO dҡGNyAxyzxyzxyzxyzCz echo sXAMAϥΦpUkjM@UI echo 'AxyzxyzxyzxyzC' | egrep 'A(xyz)+C'WҤlNOAڭn}YO A O C A@ӥHW "xyz" rꪺN |
HWoǴNOWܪkSrCt~AnSOjժOA ! bWܪkäOSrA ҥHApGAQndXɮפt ! P > rɡAiHoˡG
grep -n '[!>]' regular_express.txt
o˥iHAѤFܡH``ݨ즳DؼgGyϦVܳo˹_H '[!a-z]'HzA IOn '[^a-z] ~O諸IܩhWܪki峹AаѦҤ好ѦҸ(2)
Uڭ̨ӱNi@²檺sƧaIUoǰʧ@iHNATiƪʧ@A
ݭnsH vim hsAzLƬyɦVtXUЪ printf \AH awk OA
NiHATHAQnҼ˨ӿXFIլݬݧaI
bܦhɭԡAڭ̥iݭnNۤvƵL榡ƿXI |ҨӻAҸըƪXAmWPؤΤƤA`OiHyL@Ӥ}GtmaH ҦpڷQnXU˦G
Name Chinese English Math Average DmTsai 80 60 92 77.33 VBird 75 55 80 70.00 Ken 60 90 70 73.33 |
WƥDnAU줧iϥ tab ΪťijC бNWs printf.txt ɦWA@Uڭ̷|QγoɮרӶiXӤpmߪC ]C쪺lƪרëDOpTw (Chinese ״NO Name nh)A ӧڴNOQnpܥXoǸơAɡANoݭnCL榡z printf FI printf iHڭ̱NƿXG榡ơAӥBӤ䴩@ǯSrš㧐Uڭ̴NӬݬݡI
[root@www ~]# printf 'CL榡' ڤe ﶵPѼơG 榡譱XӯS˦G \a ĵinX \b ˰h(backspace) \f Mù (form feed) \n Xs@ \r Y Enter \t [tab] \v [tab] \xNN NN ƪƦrAiHഫƦrrC C {yA`ܼƮ榡 %ns n OƦrA s N string AYh֭ӦrF %ni n OƦrA i N integer AYh־ƦơF %N.nf n P N OƦrA f N floating (BI)ApGpƦơA ]ڦ@nQӦơApIAY %10.2f oI |
Uӧڭ̨ӶiXӱ`mߡC]ҦƳO@r (o]O̱`A)A]̱`ΨӤjƪŸNO [Tab] աI] [Tab] iHNƧ@ӾƦCIpQ printf OHѦҩUoӽdҡG
dҤ@GNWYƪɮ (printf.txt) eȦCXmWPZG( [tab] j) [root@www ~]# printf '%s\t %s\t %s\t %s\t %s\t \n' $(cat printf.txt) Name Chinese English Math Average DmTsai 80 60 92 77.33 VBird 75 55 80 70.00 Ken 60 90 70 73.33 |
ѩ printf äOuROA]ڭ̱onzLW\ANɮפeXӵ printf @Ƥ~C pWҥܡAڭ̱NCӸƳH [tab] @jAOѩ Chinese פӪAɭP English hF@ [tab] ӱNƱƦCIڡ㵲GNݨƹGtFI
t~Ab printf @q榡A%s N@ӤTwתrAӦrPrꤤNH \t o [tab] jŸӳBzIAnOoOAѩ \t P %s ٦ŮA]CӦr궡|@ [tab] P@Ӫť䪺jI
JMC쪺פTw|yWzxZAڱNCTwNnաISSIo˷QD`nI ҥHڭ̴NNƵLiTwת]paI
dҤGGNWzĤGHAOHrBơBpIܡG [root@www ~]# printf '%10s %5i %5i %5i %8.2f \n' $(cat printf.txt |\ > grep -v Name) DmTsai 80 60 92 77.33 VBird 75 55 80 70.00 Ken 60 90 70 73.33 |
Wo@榡QzݱoܨWISYI@Ӥ@ӨӸIW榡@A %10s NO@Ӫ 10 ӦrrA%5i NO 5 ӦrƦrAܩ %8.2f hN 8 Ӧr㦳pIA𫟺pIӦreסCڭ̥iHϥΩUӤ %8.2f NqG
reסG 12345678
%8.2fNqG00000.00
pWҭzAeȦ 8 ӦrAƳ 5 ӦrApI (.) @ApIUƫhC oخ榡g`ϥΩƭȵ{]pIoAѥGHۤvլݬݦpGnNpIܦ 1 SӦpBzH
printf FiH榡ƳBz~AL٥iH̾ ASCII ƦrPϧιܸƳ(3)I |Ҩӻ 16 i쪺 45 iHo줰 ASCII ܹ (Or)H
dҤTGCX 16 iƭ 45 NrH [root@www ~]# printf '\x45\n' E # oF]ܦnLiHNƭഫrApGA|g script ܡA # iHۦդ@UA 20~80 ƭȥNrOԣI ^_^ |
printf ϥά۷sxI]A@U᭱|쪺 awk HΦb C {yϥΪùXA OQ printf OIo̤]uOCX@ǥi|Ψ쪺榡ӤwA쪺ܡAiHۦh@@ǴջPm߳I ^_^
CL榡Ƴo printf OAEݤUn]Sܭn LApGAݭnۦ漶g@dznAݭnN@ǸƦbùWY}}GGXܡA printf i]O@ӫܴΪuIawk ]O@ӫD`ΪƳBzuI۸ sed ``@Ω@Ӧ檺BzA awk hɦV@ƭӡyzӳBzC]Aawk ۷AXBzpƾڸƳBzOIawk q`B@ҦOo˪G
[root@www ~]# awk '1{ʧ@1} 2{ʧ@2} ...' filename
|
awk ᭱ӳå[WjA {} ӳ]wQnƶi檺Bzʧ@C awk iHBzɮסA]iHŪӦ۫eӫO standard output C peA awk DnOBzyC@檺줺ơzAӹw]y쪺jŸ "ť" "[tab]" zI|ҨӻAڭ̥ last iHNnJ̪ƨXӡAGpUҥܡG
[root@www ~]# last -n 5 <==ȨXe root pts/1 192.168.1.100 Tue Feb 10 11:21 still logged in root pts/1 192.168.1.100 Tue Feb 10 00:46 - 02:28 (01:41) root pts/1 192.168.1.100 Mon Feb 9 11:41 - 18:30 (06:48) dmtsai pts/1 192.168.1.100 Mon Feb 9 11:41 - 11:41 (00:00) root tty1 Fri Sep 5 14:09 - 14:10 (00:01) |
YڷQnXbPnJ̪ IP ABbP IP H [tab] j}Ah|ܦoˡG
[root@www ~]# last -n 5 | awk '{print $1 "\t" $3}'
root 192.168.1.100
root 192.168.1.100
root 192.168.1.100
dmtsai 192.168.1.100
root Fri
|
WO awk ̱`ϥΪʧ@IzL print \NƦCXӡI쪺jhHť [tab] ӹj}C ]@ڳnBzA]ANݭn "" IکҷQnOĤ@HβĤTA OAĤ檺eǩǪoO]Ʈ榡DڡIҥHoϥ awk ɭԡAХT{@UAƷApGOsʪơAФnŮ [tab] bA_hAN|oӨҤloˡA|oͻ~PI
t~AѤWoӨҤlA]|DAbC@檺C쳣OܼƦW٪ANO $1, $2... ܼƦWCHWҤlӻA root O $1 A]LOĤ@Iܩ 192.168.1.100 OĤTA ҥHLNO $3 աI᭱HI٦ܼƳINO $0 A$0 Ny@CơzNHWҤlӻAĤ@檺 $0 NNOyroot .... z@ڡI ѦiAWA awk Bzy{OG
gLo˪BJAA|oA awk OyH欰@BzzA ӡyH쬰̤pBzzCnFA awk Dڨ쩳oӸƦXHXOHoNݭn awk ܼƪա
ܼƦW | NNq |
NF | C@ ($0) ֦` |
NR | ثe awk ҳBzOyĴXz |
FS | ثejrAw]Oť |
ڭ~HW last -n 5 ҤlӰApGڷQnG
hiHoˡG
n`NAawk Ҧʧ@OHy ' zAAѩPO諸A ҥHA awk 榡epGQnH print CLɡAOoDܼƪrA]tW@p` printf 쪺榡AݭnϥөwqXӳI]wgO awk OTwΪkFI[root@www ~]# last -n 5| awk '{print $1 "\t lines: " NR "\t columns: " NF}' root lines: 1 columns: 10 root lines: 2 columns: 10 root lines: 3 columns: 10 dmtsai lines: 4 columns: 10 root lines: 5 columns: 9 # `NAb awk NR, NF ܼƭnΤjgABݭnr $ աI |
o˥iHA NR P NF tOFaHnFAUӽͤ@ͩҿת "" FaI
JMݭnΨ "" OA۵MNݭn@BoҦpUoǡG
B椸 | NNq |
> | j |
< | p |
>= | jε |
<= | pε |
== | |
!= |
ȱo`NOӡy == zŸA]G
nFAڭ̹ڨӹBΤ@UP_aI|ҨӻAb /etc/passwd OH_ ":" ӧ@쪺jA ɮפĤ@쬰bAĤThO UIDC]ڭnd\AĤTp 10 HUƾڡAåBȦCXbPĤTA iHo˰G
[root@www ~]# cat /etc/passwd | \ > awk '{FS=":"} $3 < 10 {print $1 "\t " $3}' root:x:0:0:root:/root:/bin/bash bin 1 daemon 2 ....(HUٲ).... |
aILAĤ@STܥXөOHoO]ڭŪJĤ@檺ɭԡAܼ $1, $2... w]٬OHť䬰jAҥHMڭ̩wqF FS=":" FA OoȯbĤG~}lͮġCOHڭ̥iHw]w awk ܼưڡI Q BEGIN orIo˰G
[root@www ~]# cat /etc/passwd | \ > awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t " $3}' root 0 bin 1 daemon 2 ......(HUٲ)...... |
ܦaIӰF BEGIN ~Aڭ٦ END OIt~ApGn awk Ӷiyp\zOHHUҤlӬݡA ]ڦ@~ƪɦW pay.txt AeOo˪G
Name 1st 2nd 3th VBird 23000 24000 25000 DMTsai 21000 20000 23000 Bird2 43000 42000 41000 |
pڭpCӤH`BOHӥBٷQn榡ƿXIڭ̥iHo˦Ҽ{G
[root@www ~]# cat pay.txt | \ > awk 'NR==1{printf "%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,"Total" } NR>=2{total = $2 + $3 + $4 printf "%10s %10d %10d %10d %10.2f\n", $1, $2, $3, $4, total}' Name 1st 2nd 3th Total VBird 23000 24000 25000 72000.00 DMTsai 21000 20000 23000 64000.00 Bird2 43000 42000 41000 126000.00 |
WҤlXӭnƶӭnG
Q awk oӪNANiHڭ̳Bzܦh`u@FOIuOnΪܡ ~A awk X榡A``|H printf ӻUAҥHA ̦nA printf ]yLx@UnաIt~A awk ʧ@ {} ]O䴩 if () I |ҨӻAWOiHqoˡG
[root@www ~]# cat pay.txt | \ > awk '{if(NR==1) printf "%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,"Total"} NR>=2{total = $2 + $3 + $4 printf "%10s %10d %10d %10d %10.2f\n", $1, $2, $3, $4, total}' |
AiHJӪ@UWӿJԣPqhAѨػykaIڭӤHOɦVϥβĤ@ػykA ]|Τ@ʰڡI ^_^
~A awk ٥iHڭ̶ijpIuO۷nΡILAݩiWҵ{FA ڭ̳o̴NAh[СCpGA쪺ܡAаȥѦҩ\Ūs (4)C
ɭԷ|ΨɮתڡHq`OyP@ӮM˳n骺PA]wɻPlɪtzC
ܦhɭԩҿתɮפAq`OΦb ASCII ¤rɪWIɮתOǡH̱`NO diff oI
t~AF diff 蠟~Aڭ٥iHǥ cmp ӤD¤rɡIPɡA]ǥ diff إߪRɡA
HBzɤB (patch) \ɮשOINӪI
diff NOΦbɮפtAåBOH欰Ӥ諸I@OΦb ASCII ¤rɪWC ѩOH欰諸A] diff q`OΦbP@ɮ(γn)sªtWI |ҨӻApڭ̭nN /etc/passwd Bz@ӷsABz觋G Nĥ|RAĤhNyno six linezAsɮשm /tmp/test ̭AӫH
[root@www ~]# mkdir -p /tmp/test <==إߴեΪؿ [root@www ~]# cd /tmp/test [root@www test]# cp /etc/passwd passwd.old [root@www test]# cat /etc/passwd | \ > sed -e '4d' -e '6c no six line' > passwd.new # `N@UA sed ᭱pGnWLӥHWʧ@ɡACӰʧ@eo[ -e ~I # zLoӰʧ@Ab /tmp/test ̭Ksª passwd ɮצsbFI |
UӰQפ@U diff ΪkaI
[root@www ~]# diff [-bBi] from-file to-file ﶵPѼơG from-file G@ɦWA@lɮתɦWF to-file G@ɦWA@تɮתɦWF `NAfrom-file to-file iH - NA - NyStandard inputzNC -b G@AȦhӪťժt(Ҧp "about me" P "about me" ۦP -B Gťզ檺tC -i GjpgPC dҤ@G passwd.old P passwd.new tG [root@www test]# diff passwd.old passwd.new 4d3 <==ĥ|QR (d) FAǬOk䪺ĤT < adm:x:3:4:adm:/var/adm:/sbin/nologin <==oCX(<)ɮ׳QR@椺e 6c5 <==ɮתĤQN (c) kɮתĤ < sync:x:5:0:sync:/sbin:/bin/sync <==(<)ɮײĤ椺e --- > no six line <==k(>)ɮײĤ椺e # oaI diff Nڭ̭𫍧Bz粒FI |
diff ɮׯuO²ILAAn diff hӧۤzɮסA]XԣNNI t~A diff ]iHӥؿUtI|ҨӻAڭ̷QnAѤ@UP}浥 (runlevel) eԣPH]AwgD浥 3 P 5 Ұʸ}Om /etc/rc3.d /etc/rc5.d A hڭ̥iHNӥؿ@UG
[root@www ~]# diff /etc/rc3.d/ /etc/rc5.d/
Only in /etc/rc3.d/: K99readahead_later
Only in /etc/rc5.d/: S96readahead_later
|
ڭ̪ diff oaI٥iH藍PؿUۦPɦWeAo˯uܤK
۹ diff sxγ~A cmp GNΪSohF cmp Dn]ObɮסALDnQΡy줸աzhA ]AM]iH binary file o(٬OnAA diff DnOHyzA cmp hOHy줸աzhAoäۦPI)
[root@www ~]# cmp [-l] file1 file2 ﶵPѼơG -l GNҦPI줸ճBCXӡC] cmp w]ȷ|XĤ@ӵo{PIC dҤ@G cmp @U passwd.old passwd.new [root@www test]# cmp passwd.old passwd.new passwd.old passwd.new differ: byte 106, line 4 |
ݨFܡHĤ@ӵo{PIbĥ|AӥB줸ռƬOb 106 Ӧ줸ճBIo cmp ]iHΨӤ binary
աI ^_^
patch oӫOP diff iOKiYڡIڭ̫eAdiff iHΨӤӪtA |ҨӻAڭ̩ҫإߪ passwd.old passwd.new NOӤPɮסC ApGnyɯšzOHNOyNªɮפɯŦsɮzɡAӭnOH ]աINOyªtAñNtɻs@ɤBɡAAѸɤBɧsɮסzYiC |ҨӻAڭ̥iHo˰աG
dҤ@GH /tmp/test passwd.old P passwd.new s@ɤBɮ [root@www test]# diff -Naur passwd.old passwd.new > passwd.patch [root@www test]# cat passwd.patch --- passwd.old 2009-02-10 14:29:09.000000000 +0800 <==sɮתT +++ passwd.new 2009-02-10 14:29:18.000000000 +0800 @@ -1,9 +1,8 @@ <==sɮnקƪɩwdAɦb 1-9 Asɦb 1-8 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin -adm:x:3:4:adm:/var/adm:/sbin/nologin <==ɮקR lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin -sync:x:5:0:sync:/sbin:/bin/sync <==ɮקR +no six line <==ksɥ[J shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin |
@ӻAϥ diff s@XӪɮ׳q`ϥΰɦW .patch oCܩeNpPWЪˤlC WNOH欰Aݬݭ𨷿@˻P@˪A@˪aAMN@˪aNI HW欰ҡAsɮݨ - |RAݨ + |[JInFApNªɮקsseOH NON passwd.old 令P passwd.new ۦPIiHo˰G
[root@www ~]# patch -pN < patch_file <==s [root@www ~]# patch -R -pN < patch_file <==٭ ﶵPѼơG -p G᭱iHyXhؿzNC -R GN٭ANsɮ٭즨ªC dҤGGNs@XӪ patch file Ψӧsª [root@www test]# patch -p0 < passwd.patch patching file passwd.old [root@www test]# ll passwd* -rw-r--r-- 1 root root 1929 Feb 10 14:29 passwd.new -rw-r--r-- 1 root root 1929 Feb 10 15:12 passwd.old <==ɮפ@Ҥ@ˡI dҤTG_ɮתe [root@www test]# patch -R -p0 < passwd.patch [root@www test]# ll passwd* -rw-r--r-- 1 root root 1929 Feb 10 14:29 passwd.new -rw-r--r-- 1 root root 1986 Feb 10 15:18 passwd.old # ɮ״No˫_ªo |
o̷|ϥ -p0 OH]ڭ̦bsªƮɬObP@ӥؿUA ]ݭnhؿաIpGOϥξؿ (diff ¥ؿ sؿ) ɡA Non̾ګإ patch ɮשҦbؿӶiؿRoI
ԲӪ patch Ϊkڭ̷|bĤglXsĶ (ĤGQG)AjaСA o̶ȬOеAAڭ̥iHQ diff ӤɮפtA ii@BQγoӥ\ӻs@ɮ (patch file) AjaeiPɯũOIܤaI ^_^
pGAgϥιL@ǹϧΤѳBzn骺ܡAܮeo{Aڭ̦bCLɭԡA iHPɿܻP]wC@CLɪYaI]iH]wXOIApGڬOb Linux UCL¤rɩO iiH㦳DڡHiiH[JXڡHIMiHڡIϥ pr NFoӥ\FCLA pr ѼƹbӦhFA]A@ӻAȨϥγ²檺觋ӳBzӤwC|ҨӻApGQnCL /etc/man.config OH
[root@www ~]# pr /etc/man.config 2007-01-06 18:24 /etc/man.config Page 1 # # Generated automatically from man.conf.in by the # configure script. .....HUٲ...... |
WSr騺@OANOϥ pr BzҳyDաID|yɮɶzByɮɦWzΡyXzTjءC h pr ϥΡAаѦ pr ڡI ^_^
[root@www ~]# grep '\*' /etc/*
|
[root@www ~]# grep '\*' $(find /etc -type f)
|
[root@www ~]# grep '\*' $(find / -type f)
-bash: /bin/grep: Argument list too long
|
[root@www ~]# find / -type f | xargs -n 10 grep '\*'
|
[root@www ~]# find / -type f | xargs -n 10 grep -l '\*'
|
[root@www ~]# ifconfig eth0 | grep 'inet addr' | \ > sed 's/^.*inet addr://g'| cut -d ' ' -f1 |
[root@www ~]# alias myip="ifconfig eth0 | grep 'inet addr' | \ > sed 's/^.*inet addr://g'| cut -d ' ' -f1 " |
[root@www ~]# MYIP=$( myip )
|