Bashã¹ã¯ãªããïŒéå§
Bashã¹ã¯ãªãããããŒã2ïŒã«ãŒã
Bashã¹ã¯ãªãããããŒã3ïŒãªãã·ã§ã³ãšã³ãã³ãã©ã€ã³ã¹ã€ãã
Bashã¹ã¯ãªãããããŒã4ïŒå
¥åãšåºå
Bashã¹ã¯ãªãããããŒã5ïŒã·ã°ãã«ãããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ãã¹ã¯ãªãã管ç
Bashã¹ã¯ãªãããããŒã6ïŒé¢æ°ãšã©ã€ãã©ãªãŒã®éçº
Bashã¹ã¯ãªãããããŒã7ïŒsedãšã¯ãŒãã
Bashã¹ã¯ãªãããããŒã8ïŒawkããŒã¿åŠçèšèª
Bashã¹ã¯ãªããããŒã9ïŒæ£èŠè¡šçŸ
Bashã¹ã¯ãªãããããŒã10ïŒã±ãŒã¹ã¹ã¿ãã£
Bashã¹ã¯ãªãããããŒã11ïŒå¯Ÿè©±åãŠãŒãã£ãªãã£ã®æåŸ
ãšèªåå
sedãšawkã䜿çšããŠbashã¹ã¯ãªããã§ããã¹ããå®å
šã«åŠçããã«ã¯ãæ£èŠè¡šçŸãåŠçããã ãã§ãã ãã®äŸ¿å©ãªããŒã«ã®å®çŸã¯æåéãã©ãã§ãèŠã€ããããšãã§ãããã¹ãŠã®æ£èŠè¡šçŸã¯åãã¢ã€ãã¢ã«åºã¥ããŠåæ§ã®æ¹æ³ã§é
眮ãããŸãããç°ãªãç°å¢ã§ããããæäœããããšã«ã¯ç¹å®ã®æ©èœããããŸãã ããã§ã¯ãLinuxã³ãã³ãã©ã€ã³ã¹ã¯ãªããã§ã®äœ¿çšã«é©ããæ£èŠè¡šçŸã«ã€ããŠèª¬æããŸãã

ãã®è³æã¯ããããäœã§ããããå®å
šã«ç¥ããªãå¯èœæ§ã®ãã人åãã«èšèšãããæ£èŠè¡šçŸã®çŽ¹ä»ãç®çãšããŠããŸãã ãããã£ãŠãæåããå§ããŸãã

æ£èŠè¡šçŸãšã¯äœã§ããïŒ
å€ãã®äººã«ãšã£ãŠãæåã«æ£èŠè¡šçŸãèŠããšãæå³ã®ãªãå±±ã®ã·ã³ãã«ã«çŽé¢ããŠãããšããèããããã«çããŸãã ããããããã¯ãã¡ãããããã§ã¯ãããŸããã ããšãã°ããã®æ£èŠè¡šçŸãèŠãŠãã ãã
^([a-zA-Z0-9_\-\.\+]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$
ç§ãã¡ã®æèŠã§ã¯ãå®å
šãªåå¿è
ã§ãããã«ãããã©ã®ããã«æ©èœãããªããããå¿
èŠãšããããç解ããã§ããã:)ããªããããç解ããŠããªããªãããã èªãã§ãã ããããããŠãã¹ãŠãé©åã«èœã¡ãŸãã
æ£èŠè¡šçŸã¯ãsedãawkãªã©ã®ããã°ã©ã ãããã¹ãããã£ã«ã¿ãªã³ã°ããããã«äœ¿çšãããã¿ãŒã³ã§ãã ãã³ãã¬ãŒãã¯ãããèªäœãè¡šãéåžžã®ASCIIæåãšãããšãã°ç¹å®ã®æåã°ã«ãŒããåç
§ã§ããããã«ãããªã©ãç¹å¥ãªåœ¹å²ãæããããããã¡ã¿æåã䜿çšããŸãã
æ£èŠè¡šçŸã¿ã€ã
ããŸããŸãªç°å¢ãããšãã°JavaãPerlãPythonãªã©ã®ããã°ã©ãã³ã°èšèªãsedãawkãgrepãªã©ã®LinuxããŒã«ã§ã®æ£èŠè¡šçŸã®å®è£
ã«ã¯ãç¹å®ã®æ©èœããããŸãã ãããã®æ©èœã¯ããã¿ãŒã³ã®è§£éãåŠçããããããæ£èŠè¡šçŸåŠçãšã³ãžã³ã«äŸåããŠããŸãã
Linuxã«ã¯2ã€ã®æ£èŠè¡šçŸãšã³ãžã³ããããŸãã
- POSIX Basic Regular ExpressionïŒBREïŒæšæºããµããŒããããšã³ãžã³ã
- POSIXæ¡åŒµæ£èŠè¡šçŸïŒEREïŒæšæºããµããŒããããšã³ãžã³ã
ã»ãšãã©ã®LinuxãŠãŒãã£ãªãã£ã¯ãå°ãªããšãPOSIX BREæšæºã«æºæ ããŠããŸãããäžéšã®ãŠãŒãã£ãªãã£ïŒsedãå«ãïŒã¯BREæšæºã®ãµãã»ããã®ã¿ãç解ããŸãã ãã®å¶éã®çç±ã®1ã€ã¯ãã¯ãŒãããã»ãã·ã³ã°ã§ãã®ãããªãŠãŒãã£ãªãã£ãå¯èœãªéãé«éã«ããããšã§ãã
POSIX EREæšæºã¯ãå€ãã®å Žåãããã°ã©ãã³ã°èšèªã§å®è£
ãããŠããŸãã æ£èŠè¡šçŸã®éçºã«å€æ°ã®ããŒã«ã䜿çšã§ããŸãã ããšãã°ãããã¹ãå
ã§åã
ã®åèªãæ°åã®ã»ãããæ€çŽ¢ãããªã©ãäžè¬çã«äœ¿çšããããã¿ãŒã³ã®ç¹æ®ãªæåã·ãŒã±ã³ã¹ã䜿çšã§ããŸãã Awkã¯EREæšæºããµããŒãããŠããŸãã
ããã°ã©ããŒã®æèŠãšããããäœæããããšã³ãžã³ã®æ©èœã«å¿ããŠãæ£èŠè¡šçŸãéçºããå€ãã®æ¹æ³ããããŸãã ã©ã®ãšã³ãžã³ã§ãç解ã§ããæ®éçãªæ£èŠè¡šçŸãæžãã®ã¯ç°¡åã§ã¯ãããŸããã ãããã£ãŠãæãäžè¬çã«äœ¿çšãããæ£èŠè¡šçŸã«çŠç¹ãåœãŠãsedããã³awkã®å®è£
ã®æ©èœãæ€èšããŸãã
POSIX BREæ£èŠè¡šçŸ
ããããæãåçŽãªBREãã¿ãŒã³ã¯ãããã¹ãå
ã®æåã·ãŒã±ã³ã¹ã®æ£ç¢ºãªåºçŸãèŠã€ããããã®æ£èŠè¡šçŸã§ãã sedãšawkã®æååæ€çŽ¢ã¯æ¬¡ã®ããã«ãªããŸãã
$ echo | sed -n '/test/p' $ echo | awk '/test/{print $0}'
sedã®ãã¿ãŒã³ã§ããã¹ããæ€çŽ¢awkã®ãã¿ãŒã³ã§ããã¹ããæ€çŽ¢ããç¹å®ã®ãã³ãã¬ãŒãã®æ€çŽ¢ã¯ãè¡å
ã®ããã¹ãã®æ£ç¢ºãªäœçœ®ãèæ
®ããã«å®è¡ãããããšã«æ°ä»ããããããŸããã ããã«ãçºçåæ°ã¯éèŠã§ã¯ãããŸããã æ£èŠè¡šçŸãæååå
ã®æå®ãããããã¹ããèŠã€ããåŸãæååã¯é©åã§ãããšèŠãªããããããªãåŠçã«æž¡ãããŸãã
æ£èŠè¡šçŸã䜿çšããå Žåã倧æåãšå°æåãåºå¥ããããšããäºå®ãèæ
®ããå¿
èŠããããŸãã
$ echo | awk '/Test/{print $0}' $ echo | awk '/test/{print $0}'
æ£èŠè¡šçŸã§ã¯å€§æåãšå°æåãåºå¥ãããŸãæåã®æ£èŠè¡šçŸã¯äžèŽããŸããã§ããã倧æåã§å§ãŸããtestããšããåèªãããã¹ãã«è¡šç€ºãããªãããã§ãã 2ã€ç®ã¯ã倧æåã§æžãããåèªãæ€çŽ¢ããããã«æ§æãããŠãããã¹ããªãŒã å
ã§é©åãªæååãèŠã€ããŸããã
æ£èŠè¡šçŸã§ã¯ãæåã ãã§ãªãã¹ããŒã¹ãšæ°åã䜿çšã§ããŸãã
$ echo | awk '/test 2/{print $0}'
ã¹ããŒã¹ãšæ°åãå«ãããã¹ããæ€çŽ¢ããŸãã¹ããŒã¹ã¯ãæ£èŠè¡šçŸãšã³ãžã³ã«ãã£ãŠæ£èŠã®æåãšããŠèªèãããŸãã
ç¹æ®æå
æ£èŠè¡šçŸã§ç°ãªãæåã䜿çšããå Žåãããã€ãã®æ©èœãèæ
®ããå¿
èŠããããŸãã ãã®ããããã³ãã¬ãŒãã§ã®äœ¿çšã«ã¯ç¹å¥ãªã¢ãããŒããå¿
èŠãªç¹æ®æåãŸãã¯ã¡ã¿ãã£ã©ã¯ã¿ãŒãããã€ããããŸãã ããã«ãããŸãïŒ
.*[]^${}\+?|()
ãã³ãã¬ãŒãã§ãããã®ãããããå¿
èŠãªå Žåã¯ãããã¯ã¹ã©ãã·ã¥ïŒããã¯ã¹ã©ãã·ã¥ïŒ-
\
ãšã¹ã±ãŒãããå¿
èŠããããŸãã
ããšãã°ãããã¹ãå
ã§ãã«èšå·ãèŠã€ããå¿
èŠãããå Žåã¯ããšã¹ã±ãŒãæåãåã«ä»ããŠããã³ãã¬ãŒãã«ãã«èšå·ãå«ããå¿
èŠããããŸãã 次ã®ããã¹ããå«ã
myfile
ãšããŸãã
There is 10$ on my pocket
ãã«èšå·ã¯ã次ã®ãã¿ãŒã³ã䜿çšããŠæ€åºã§ããŸãã
$ awk '/\$/{print $0}' myfile
ãã³ãã¬ãŒãã§ç¹æ®æåã䜿çšããããã«ãããã¯ã¹ã©ãã·ã¥ãç¹æ®æåã§ããããããã³ãã¬ãŒãã§äœ¿çšããå¿
èŠãããå Žåã¯ããšã¹ã±ãŒãããå¿
èŠããããŸãã äºãã«ç¶ã2ã€ã®ã¹ã©ãã·ã¥ã®ããã«èŠããŸãã
$ echo | awk '/\\/{print $0}'
ããã¯ã¹ã©ãã·ã¥ã®ãšã¹ã±ãŒãäžèšã®ç¹æ®æåã®ãªã¹ãã«ã¯ã¹ã©ãã·ã¥ã¯å«ãŸããŠããŸããããsedãŸãã¯awkçšã«èšè¿°ãããæ£èŠè¡šçŸã§ã¹ã©ãã·ã¥ã䜿çšããããšãããšããšã©ãŒãçºçããŸãã
$ echo "3 / 2" | awk '///{print $0}'
ãã³ãã¬ãŒãã§ã®ã¹ã©ãã·ã¥ã®èª€ã£ã䜿çšå¿
èŠãªå Žåã¯ããšã¹ã±ãŒãããå¿
èŠããããŸãã
$ echo "3 / 2" | awk '/\//{print $0}'
ã¹ã©ãã·ã¥ã®ãšã¹ã±ãŒãã¢ã³ã«ãŒèšå·
ããã¹ãæååã®å
é ãŸãã¯æ«å°Ÿã«ãã¿ãŒã³ãæ·»ä»ããããã®2ã€ã®ç¹æ®æåããããŸãã ã«ããŒæå-
^
䜿çšãããšãããã¹ãè¡ã®å
é ã«ããæåã®ã·ãŒã±ã³ã¹ã説æã§ããŸãã ç®çã®ãã¿ãŒã³ãæååã®å¥ã®å Žæã«ããå Žåãæ£èŠè¡šçŸã¯ããã«å¿çããŸããã ãã®ã·ã³ãã«ã®äœ¿çšã¯æ¬¡ã®ããã«ãªããŸãã
$ echo "welcome to likegeeks website" | awk '/^likegeeks/{print $0}' $ echo "likegeeks website" | awk '/^likegeeks/{print $0}'
è¡ã®å
é ã§ãã¿ãŒã³ãæ€çŽ¢ãã^
æåã¯ãè¡ã®å
é ã§ãã¿ãŒã³ãæ€çŽ¢ããããã«äœ¿çšããã倧æåãšå°æåã®åºå¥ããããŸãã ãããããã¹ããã¡ã€ã«ã®åŠçã«ã©ã®ããã«åœ±é¿ããããèŠãŠã¿ãŸãããã
$ awk '/^this/{print $0}' myfile
ãã¡ã€ã«ã®ããã¹ãã®è¡é ã§ãã¿ãŒã³ãæ€çŽ¢ããsedã䜿çšããå Žåããã³ãã¬ãŒãå
ã®ã©ããã«ã«ããŒãé
眮ãããšãä»ã®æ®éã®ãã£ã©ã¯ã¿ãŒãšããŠèªèãããŸãã
$ echo | sed -n '/s ^/p'
sedã®ãã¿ãŒã³ã®å
é ã«ãªãã«ããŒawkã§ã¯ãåããã³ãã¬ãŒãã䜿çšããŠããã®æåããšã¹ã±ãŒãããå¿
èŠããããŸãã
$ echo | awk '/s \^/{print $0}'
awkã®ãã³ãã¬ãŒãã®å
é ã«ãªãã«ããŒè¡ã®å
é ã§ããã¹ãã®æçã®æ€çŽ¢ãæŽçããŸããã è¡æ«ã§äœããèŠã€ããå¿
èŠãããå Žåã¯ã©ãããŸããïŒ
ãã«èšå·-
$
ã¯ãè¡æ«ã®ã¢ã³ã«ãŒèšå·ã§ãããããã«åœ¹ç«ã¡ãŸãã
$ echo | awk '/test$/{print $0}'
è¡æ«ã®ããã¹ããæ€çŽ¢ããåããã¿ãŒã³ã§äž¡æ¹ã®ã¢ã³ã«ãŒæåã䜿çšã§ããŸãã 次ã®æ£èŠè¡šçŸã䜿çšããŠã次ã®å³ã«ãã®å
容ã瀺ãããŠãã
myfile
ãã¡ã€ã«ãåŠçããŠã¿ãŸãããã
$ awk '/^this is a test$/{print $0}' myfile
è¡ã®å§ããšçµããã«ç¹æ®æåã䜿çšãããã¿ãŒã³ã芧ã®ãšããããã³ãã¬ãŒãã¯ãæå®ãããäžé£ã®æåãšãã®äœçœ®ã«å®å
šã«å¯Ÿå¿ããè¡ã«ã®ã¿åå¿ããŸããã
ã¢ã³ã«ãŒæåã䜿çšããŠã空ã®è¡ãé€å€ããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
$ awk '!/^$/{print $0}' myfile
ãã®ãã³ãã¬ãŒãã§ã¯ãåŠå®èšå·ã§ããæå笊ã䜿çšããŸãã-
!
ã ãã®ãããªãã¿ãŒã³ã®äœ¿çšã«ãããè¡ã®å
é ãšæ«å°Ÿã®éã«äœãå«ãŸããŠããªãè¡ãæ€çŽ¢ãããæå笊ã®ãããã§ããã®ãã¿ãŒã³ã«äžèŽããªãè¡ã®ã¿ãå°å·ãããŸãã
ãããèšå·
ãããã¯ãæ¹è¡æåãé€ãä»»æã®åäžæåã®æ€çŽ¢ã«äœ¿çšãããŸãã myfileãæ£èŠè¡šçŸã«è»¢éããŸãããã®å
容ã¯æ¬¡ã®ãšããã§ãã
$ awk '/.st/{print $0}' myfile
æ£èŠè¡šçŸã§ããªãªãã䜿çšããåºåãããããããã«ããã¡ã€ã«ã®æåã®2è¡ã®ã¿ããã¿ãŒã³ã«å¯Ÿå¿ããŸããããã¯ããstããšããæåã®ã·ãŒã±ã³ã¹ã«å¥ã®æåãå
è¡ããŠããããã§ããè¡ã®å§ãŸãã
ãã£ã©ã¯ã¿ãŒã¯ã©ã¹
ãããã¯ä»»æã®1æåã«äžèŽããŸãããæ¢ããŠããæåã®ã»ãããããæè»ã«å¶éããå¿
èŠãããå Žåã¯ã©ãã§ããããïŒ ãã®ç¶æ³ã§ã¯ãæåã¯ã©ã¹ã䜿çšã§ããŸãã
ãã®ã¢ãããŒãã®ãããã§ãç¹å®ã®ã»ããã®ä»»æã®ãã£ã©ã¯ã¿ãŒã®æ€çŽ¢ãæŽçã§ããŸãã æåã¯ã©ã¹ãèšè¿°ããããã«ãè§æ¬åŒ§ã䜿çšãããŸã-
[]
ïŒ
$ awk '/[oi]th/{print $0}' myfile
æ£èŠè¡šçŸã®æåã¯ã©ã¹ã®èª¬æããã§ã¯ãèšå·ãoããŸãã¯èšå·ãiããããæååãthããæ¢ããŠããŸãã
倧æåãŸãã¯å°æåã§å§ãŸãåèªãæ€çŽ¢ããå Žåãã¯ã©ã¹ã圹ç«ã¡ãŸãã
$ echo | awk '/[Tt]his is a test/{print $0}' $ echo | awk '/[Tt]his is a test/{print $0}'
å°æåãŸãã¯å€§æåã§å§ãŸãåèªãæ€çŽ¢ããŸãæåã¯ã©ã¹ã¯æåã«éå®ãããŸããã ããã§ã¯ãä»ã®æåã䜿çšã§ããŸãã ã©ã®ç¶æ³ã¯ã©ã¹ãå¿
èŠã«ãªãããåãã£ãŠèšãããšã¯ã§ããŸãã-ããã¯ãã¹ãŠè§£æ±ºãããåé¡ã«äŸåããŸãã
æåã¯ã©ã¹ã®æåŠ
æåã¯ã©ã¹ã䜿çšããŠãäžèšã®éåé¡ã解決ããããšãã§ããŸãã ã€ãŸããã¯ã©ã¹å
ã®æåãæ€çŽ¢ãã代ããã«ãã¯ã©ã¹å
ã«ãªããã¹ãŠã®ãã®ã®æ€çŽ¢ãæŽçã§ããŸãã ãã®æ£èŠè¡šçŸã®åäœãå®çŸããã«ã¯ãã¯ã©ã¹æåã®ãªã¹ãã®åã«
^
èšå·ãé
眮ããŸãã 次ã®ããã«ãªããŸãã
$ awk '/[^oi]th/{print $0}' myfile
ã¯ã©ã¹å€ã®æåãæ€çŽ¢ãããã®å ŽåãæååãthããèŠã€ãããŸããããã®åã«ã¯ãoãããiãããããŸããã
æåç¯å²
æåã¯ã©ã¹ã§ã¯ãããã·ã¥ã䜿çšããŠæåç¯å²ãèšè¿°ã§ããŸãã
$ awk '/[ep]st/{print $0}' myfile
æåã¯ã©ã¹ã®æåç¯å²ã®èª¬æãã®äŸã§ã¯ãæ£èŠè¡šçŸã¯äžé£ã®æåãstãã«å¿çããŸãããã®åã«ã¯ãæåãeããšãpãã®éã«ã¢ã«ãã¡ãããé ã«æåãé
眮ãããŠããŸãã
çªå·ããç¯å²ãäœæããããšãã§ããŸãã
$ echo "123" | awk '/[0-9][0-9][0-9]/' $ echo "12a" | awk '/[0-9][0-9][0-9]/'
3ã€ã®æ°åãæ€çŽ¢ããããã®æ£èŠè¡šçŸæåã¯ã©ã¹ã«ã¯ãããã€ãã®ç¯å²ãå«ããããšãã§ããŸãã
$ awk '/[a-fm-z]st/{print $0}' myfile
ããã€ãã®ç¯å²ã§æ§æãããæåã¯ã©ã¹ãã®æ£èŠè¡šçŸã¯ããã¹ãŠã®ã·ãŒã±ã³ã¹ãstããæ€åºãããã®åã«
af
ããã³
mz
ç¯å²ã®æåããããŸãã
ç¹æ®æåã¯ã©ã¹
BREã«ã¯ãæ£èŠè¡šçŸãäœæãããšãã«äœ¿çšã§ããç¹å¥ãªæåã¯ã©ã¹ããããŸãã
[[:alpha:]]
-倧æåãŸãã¯å°æåã§æžãããã¢ã«ãã¡ãããæåã«äžèŽããŸãã[[:alnum:]]
-ä»»æã®è±æ°åãã€ãŸãç¯å²0-9
ã AZ
ã az
æåã«äžèŽããŸãã[[:blank:]]
-ã¹ããŒã¹ãšã¿ãæåã«äžèŽããŸãã[[:digit:]]
- 0
ããžã¿ã«æåã[[:upper:]]
-倧æåã®ã¢ã«ãã¡ãããæåAZ
[[:lower:]]
-ã¢ã«ãã¡ãããã®å°æåaz
ã
[[:print:]]
-å°å·å¯èœãªæåã«äžèŽããŸãã[[:punct:]]
-å¥èªç¹ã«äžèŽããŸãã[[:space:]]
-ç¹ã«ç©ºçœæå-ââã¹ããŒã¹ãã¿ãæåã NL
ã FF
ã VT
ã CR
æåã
次ã®ãããªãã³ãã¬ãŒãã§ç¹å¥ãªã¯ã©ã¹ã䜿çšã§ããŸãã
$ echo "abc" | awk '/[[:alpha:]]/{print $0}' $ echo "abc" | awk '/[[:digit:]]/{print $0}' $ echo "abc123" | awk '/[[:digit:]]/{print $0}'
ç¹æ®ãªæ£èŠè¡šçŸã®æåã¯ã©ã¹ã¢ã¹ã¿ãªã¹ã¯èšå·
ãã¿ãŒã³å
ã®æåã®åŸã«ã¢ã¹ã¿ãªã¹ã¯ã眮ãããŠããå Žåãæåãæååã«äœåºŠãçŸãããšãæåãæååã«ãªãå Žåãå«ããŠãæ£èŠè¡šçŸãæ©èœããããšãæå³ããŸãã
$ echo "test" | awk '/tes*t/{print $0}' $ echo "tessst" | awk '/tes*t/{print $0}'
æ£èŠè¡šçŸã§*æåã䜿çšãããã®ã¯ã€ã«ãã«ãŒãæåã¯ãéåžžãã¿ã€ããã¹ãåžžã«èŠãããåèªããŸãã¯ç°ãªãã¹ãã«ãèš±å¯ããåèªãåŠçããããã«äœ¿çšãããŸãã
$ echo | awk '/colou*r/{print $0}' $ echo | awk '/colou*r/{print $0}'
ã¹ãã«ãç°ãªãåèªãæ€çŽ¢ãããã®äŸã§ã¯ãåãæ£èŠè¡šçŸãåèªãcolorããšåèªãcolorãã®äž¡æ¹ã«å¿çããŸãã ããã¯ãã¢ã¹ã¿ãªã¹ã¯ãåŸã«ç¶ãèšå·ãuããååšããªãããé£ç¶ããŠæ°ååºçŸããå¯èœæ§ãããããã§ãã
ã¢ã¹ã¿ãªã¹ã¯èšå·ã®æ©èœããçãããã1ã€ã®äŸ¿å©ãªæ©èœã¯ãã¢ã¹ã¿ãªã¹ã¯èšå·ãããããšçµã¿åãããããšã§ãã ãã®çµã¿åããã«ãããæ£èŠè¡šçŸã¯ä»»æã®æ°ã®æåã«å¿çã§ããŸãã
$ awk '/this.*test/{print $0}' myfile
ä»»æã®æ°ã®ä»»æã®æåã«å¿çãããã³ãã¬ãŒããã®å Žåããthisããšãtestããšããåèªã®éã«ããã€ã®æåãå«ãŸããŠããŠãé¢ä¿ãããŸããã
ã¢ã¹ã¿ãªã¹ã¯ã¯ãæåã¯ã©ã¹ã§ã䜿çšã§ããŸãã
$ echo "st" | awk '/s[ae]*t/{print $0}' $ echo "sat" | awk '/s[ae]*t/{print $0}' $ echo "set" | awk '/s[ae]*t/{print $0}'
æåã¯ã©ã¹ã§ã¢ã¹ã¿ãªã¹ã¯ã䜿çšãã3ã€ãã¹ãŠã®äŸã§ãæ£èŠè¡šçŸã¯æ©èœããŸããããã¯ãæåã¯ã©ã¹ã®åŸã«ã¢ã¹ã¿ãªã¹ã¯ããããšããaããŸãã¯ãeãã®æåãããã€ã§ãèŠã€ãã£ãå Žåãæååãç¹å®ã®ãã¿ãŒã³ã«äžèŽããããã§ãã
POSIX EREæ£èŠè¡šçŸ
äžéšã®LinuxãŠãŒãã£ãªãã£ããµããŒãããPOSIX EREãã³ãã¬ãŒãã«ã¯ãè¿œå ã®æåãå«ãŸããå ŽåããããŸãã ãã§ã«è¿°ã¹ãããã«ãawkã¯ãã®æšæºããµããŒãããŠããŸãããsedã¯ãµããŒãããŠããŸããã
ããã§ã¯ãç¬èªã®æ£èŠè¡šçŸãäœæãããšãã«åœ¹ç«ã€EREãã³ãã¬ãŒãã§æãäžè¬çã«äœ¿çšãããæåã«ã€ããŠèª¬æããŸãã
âçå笊
çå笊ã¯ãå
è¡ããæåãããã¹ãå
ã§1ååºçŸããå ŽåãšåºçŸããªãå Žåãããããšã瀺ããŸãã ãã®æåã¯ãç¹°ãè¿ãã¡ã¿æåã®1ã€ã§ãã 以äžã«äŸã瀺ããŸãã
$ echo "tet" | awk '/tes?t/{print $0}' $ echo "test" | awk '/tes?t/{print $0}' $ echo "tesst" | awk '/tes?t/{print $0}'
æ£èŠè¡šçŸã®çå笊ã芧ã®ãšããã3çªç®ã®ã±ãŒã¹ã§ã¯ãæå "s"ã2ååºçŸãããããæ£èŠè¡šçŸã¯åèª "tesst"ã«å¿çããŸããã
çå笊ã¯ãæåã¯ã©ã¹ã§ã䜿çšã§ããŸãã
$ echo "tst" | awk '/t[ae]?st/{print $0}' $ echo "test" | awk '/t[ae]?st/{print $0}' $ echo "tast" | awk '/t[ae]?st/{print $0}' $ echo "taest" | awk '/t[ae]?st/{print $0}' $ echo "teest" | awk '/t[ae]?st/{print $0}'
çå笊ãšãã£ã©ã¯ã¿ãŒã®ã¯ã©ã¹è¡ã«ã¯ã©ã¹ã®æåããªãå ŽåããŸãã¯ãã®1ã€ã1ååºçŸããå Žåãåèªã«2æåã衚瀺ãããã·ã¹ãã ãããã¹ãã®ãã¿ãŒã³ãšäžèŽããªããªã£ãå Žåãæ£èŠè¡šçŸã¯æ©èœããŸãã
âãã©ã¹èšå·
ãã¿ãŒã³å
ã®ãã©ã¹èšå·ã¯ãåã®æåãããã¹ãã«1å以äžåºçŸããå Žåãæ£èŠè¡šçŸãæ¢ããŠãããã®ãèŠã€ããããšã瀺ããŸãã åæã«ããã®ãããªãã¶ã€ã³ã¯ã·ã³ãã«ã®äžåšã«åå¿ããŸããïŒ
$ echo "test" | awk '/te+st/{print $0}' $ echo "teest" | awk '/te+st/{print $0}' $ echo "tst" | awk '/te+st/{print $0}'
æ£èŠè¡šçŸã®ãã©ã¹èšå·ãã®äŸã§ã¯ãåèªã«ãeãããªãå Žåãæ£èŠè¡šçŸãšã³ãžã³ã¯ããã¹ãå
ã§äžèŽãããã®ãèŠã€ããŸããã ãã©ã¹èšå·ã¯æåã¯ã©ã¹ã§ãæ©èœããŸããããã«ãããã¢ã¹ã¿ãªã¹ã¯ãšçå笊ã®ããã«èŠããŸãã
$ echo "tst" | awk '/t[ae]+st/{print $0}' $ echo "test" | awk '/t[ae]+st/{print $0}' $ echo "teast" | awk '/t[ae]+st/{print $0}' $ echo "teeast" | awk '/t[ae]+st/{print $0}'
ãã©ã¹èšå·ãšæåã¯ã©ã¹ãã®å Žåãæååã«ã¯ã©ã¹ã®æåãå«ãŸããŠããå Žåãããã¹ãã¯ãã¿ãŒã³ã«äžèŽãããšèŠãªãããŸãã
âå³æ¬åŒ§
EREãã³ãã¬ãŒãã§äœ¿çšã§ããäžæ¬åŒ§ã¯äžèšã®æåã«äŒŒãŠããŸãããåã®æåã®å¿
èŠãªåºçŸåæ°ãããæ£ç¢ºã«æå®ã§ããŸãã 次ã®2ã€ã®åœ¢åŒã§å¶éãæå®ã§ããŸãã
n â
æ€çŽ¢ãããšã³ããªã®æ£ç¢ºãªæ°ãæå®ããæ°å€ã§ã
n, m â
次ã®ããã«è§£éããã2ã€ã®æ°å€ïŒãå°ãªããšãnåããã ãm以äžãã
æåã®ãªãã·ã§ã³ã®äŸã次ã«ç€ºããŸãã
$ echo "tst" | awk '/te{1}st/{print $0}' $ echo "test" | awk '/te{1}st/{print $0}'
æ£ç¢ºãªåºçŸåæ°ãèŠã€ããããã¿ãŒã³ã®äžæ¬åŒ§å€ãããŒãžã§ã³ã®awkã§ã¯ãããã°ã©ã ãæ£èŠè¡šçŸã§ééãèªèããããã«
--re-interval
ã³ãã³ãã©ã€ã³
--re-interval
ã䜿çšããå¿
èŠããããŸããããæ°ããããŒãžã§ã³ã§ã¯ãããè¡ãå¿
èŠã¯ãããŸããã§ããã
$ echo "tst" | awk '/te{1,2}st/{print $0}' $ echo "test" | awk '/te{1,2}st/{print $0}' $ echo "teest" | awk '/te{1,2}st/{print $0}' $ echo "teeest" | awk '/te{1,2}st/{print $0}'
äžæ¬åŒ§ã§æå®ãããééãã®äŸã§ã¯ãæåãeãã1è¡ãŸãã¯2è¡ã«è¡šç€ºãããã¯ãã§ãããã®åŸãæ£èŠè¡šçŸã¯ããã¹ãã«å¿çããŸãã
äžæ¬åŒ§ã¯ãæåã¯ã©ã¹ã§ã䜿çšã§ããŸãã ãã§ã«ããªãã¿ã®ååã¯ããã§æå¹ã§ãã
$ echo "tst" | awk '/t[ae]{1,2}st/{print $0}' $ echo "test" | awk '/t[ae]{1,2}st/{print $0}' $ echo "teest" | awk '/t[ae]{1,2}st/{print $0}' $ echo "teeast" | awk '/t[ae]{1,2}st/{print $0}'
äžæ¬åŒ§ãšæåã¯ã©ã¹ã·ã³ãã«ãaããŸãã¯ã·ã³ãã«ãeãã1åãŸãã¯2åå«ãŸããŠããå Žåããã³ãã¬ãŒãã¯ããã¹ãã«å¿çããŸãã
âèšå·ããŸãã¯ã
ã·ã³ãã«
|
-æ£èŠè¡šçŸã®çžŠç·ã¯ãè«ççãªããŸãã¯ããæå³ããŸãã ãã®ãããªèšå·ã§åºåãããããã€ãã®ãã©ã°ã¡ã³ããå«ãæ£èŠè¡šçŸãåŠçãããšããšã³ãžã³ã¯ããã©ã°ã¡ã³ãã®ããããã«äžèŽããå Žåãåæãããããã¹ããé©åã§ãããšèŠãªããŸãã 以äžã«äŸã瀺ããŸãã
$ echo | awk '/test|exam/{print $0}' $ echo | awk '/test|exam/{print $0}' $ echo | awk '/test|exam/{print $0}'
æ£èŠè¡šçŸã®è«çããŸãã¯ããã®äŸã§ã¯ãããã¹ãå
ã®åèªãtestããŸãã¯ãexamããæ€çŽ¢ããããã«æ£èŠè¡šçŸãèšå®ãããŠããŸãã ãã³ãã¬ãŒãã®ãã©ã°ã¡ã³ããšããããåé¢ããã·ã³ãã«ã®é
|
ã¹ããŒã¹ãå
¥ããªãã§ãã ããã
æ£èŠè¡šçŸãã©ã°ã¡ã³ãã®ã°ã«ãŒãå
æ¬åŒ§ã䜿çšããŠãæ£èŠè¡šçŸãã©ã°ã¡ã³ããã°ã«ãŒãåã§ããŸãã ç¹å®ã®æååãã°ã«ãŒãåãããšãã·ã¹ãã ã¯éåžžã®æåãšããŠèªèããŸãã ã€ãŸããããšãã°ãç¹°ãè¿ãã®ã¡ã¿ãã£ã©ã¯ã¿ãŒãé©çšããããšãå¯èœã«ãªããŸãã ããã¯æ¬¡ã®ãããªãã®ã§ãã
$ echo "Like" | awk '/Like(Geeks)?/{print $0}' $ echo "LikeGeeks" | awk '/Like(Geeks)?/{print $0}'
æ£èŠè¡šçŸãã©ã°ã¡ã³ãã®ã°ã«ãŒãåãããã®äŸã§ã¯ãããªã¿ã¯ããšããåèªãæ¬åŒ§ã§å²ãŸããŠããŸãããã®æ§é ã®åŸã«çå笊ããããŸãã çå笊ã¯ã0ãŸãã¯1åã®ç¹°ãè¿ãããæå³ããããšãæãåºããŠãã ããããã®çµæãæ£èŠè¡šçŸã¯ãLikeãè¡ãšãLikeGeeksãè¡ã®äž¡æ¹ã«å¿çããŸãã
å®çšäŸ
æ£èŠè¡šçŸã®åºæ¬ã説æããåŸããããã䜿ã£ãŠäœã圹ã«ç«ã€ããšãããŸãã
filesãã¡ã€ã«ã®æ°ãæ°ãã
PATHç°å¢å€æ°ã«æžã蟌ãŸãããã£ã¬ã¯ããªã«ãããã¡ã€ã«ãã«ãŠã³ãããbashã¹ã¯ãªãããäœæããŸãã ãããè¡ãã«ã¯ããŸãããã£ã¬ã¯ããªãžã®ãã¹ã®ãªã¹ããäœæããå¿
èŠããããŸãã ãããsedã§è¡ããã³ãã³ãã¹ããŒã¹ã«çœ®ãæããŸãïŒ
$ echo $PATH | sed 's/:/ /g'
眮æã³ãã³ãã¯ãããã¹ããæ€çŽ¢ããããã®ãã¿ãŒã³ãšããŠæ£èŠè¡šçŸããµããŒãããŠããŸãã ãã®å Žåããã¹ãŠãéåžžã«åçŽã§ãããã³ãã³èšå·ãæ¢ããŠããŸããããããä»ã®ãã®ã䜿çšãã人ã¯ããŸãã-ããã¯ãã¹ãŠç¹å®ã®ã¿ã¹ã¯ã«äŸåããŸãã
ããã§ãã«ãŒãå
ã®ãªã¹ãã調ã¹ãŠãå¿
èŠãªã¢ã¯ã·ã§ã³ãå®è¡ããŠãããã«ãããã¡ã€ã«ã®æ°ãèšç®ããå¿
èŠããããŸãã ã¹ã¯ãªããã®äžè¬çãªã¹ããŒã ã¯æ¬¡ã®ãšããã§ãã
mypath=$(echo $PATH | sed 's/:/ /g') for directory in $mypath do done
次ã«ã
ls
ã䜿çšããŠåãã£ã¬ã¯ããªå
ã®ãã¡ã€ã«æ°ã«é¢ããæ
å ±ãååŸããã¹ã¯ãªããã®å
šæãèšè¿°ããŸãã
#!/bin/bash mypath=$(echo $PATH | sed 's/:/ /g') count=0 for directory in $mypath do check=$(ls $directory) for item in $check do count=$[ $count + 1 ] done echo "$directory - $count" count=0 done
ã¹ã¯ãªãããå®è¡ãããšã
PATH
äžéšã®ãã£ã¬ã¯ããªãååšããªãããšãå€æããå ŽåããããŸãããæ¢åã®ãã£ã¬ã¯ããªå
ã®ãã¡ã€ã«ãã«ãŠã³ãã§ããªããªãããšã¯ãããŸããã
ãã¡ã€ã«ã«ãŠã³ããã®äŸã®äž»ãªäŸ¡å€ã¯ãåãã¢ãããŒãã䜿çšããŠãã¯ããã«è€éãªåé¡ã解決ã§ããããšã§ãã â .
â
- , , , . , â , â - . . . , , :
username@hostname.com
,
username
, - . , , , , «». @.
, , . ååŸãããã®ã¯æ¬¡ã®ãšããã§ãã
^([a-zA-Z0-9_\-\.\+]+)@
: « , , , @».
â â
hostname
. , , :
([a-zA-Z0-9_\-\.]+)
. , (, ), . , :
\.([a-zA-Z]{2,5})$
: « , â 2 5 , ».
, :
^([a-zA-Z0-9_\-\.\+]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$
, :
$ echo "name@host.com" | awk '/^([a-zA-Z0-9_\-\.\+]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/{print $0}' $ echo "name@host.com.us" | awk '/^([a-zA-Z0-9_\-\.\+]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/{print $0}'
, awk , , .
ãŸãšã
, , , , . â . , â , , , , , .
bash-, . - .
芪æãªãèªè
ïŒ ?
