Rubyã§ã¯ã³ã©ã¤ãã¼ãæ¸ãéã«ãã使ãã³ãã³ãã©ã¤ã³å¼æ°ã¨å ·ä½ä¾ãã¾ã¨ãã¦ã¿ãï¼
åºæ¬
-e : ã³ãã³ãã©ã¤ã³ããã¹ã¯ãªãããæå®
ã³ãã³ãã©ã¤ã³ããã¹ã¯ãªãããæå®ããå ´åã«ä½¿ãï¼ã¯ã³ã©ã¤ãã¼ã§ã¯å¿ é ï¼
$ ruby -e 'puts "Hello, world!"'
è¡åä½ã®å¦ç
-n : åè¡ãã¨ã«å¦ç
ããã°ã©ã å ¨ä½ã以ä¸ã®whileã§å²ã¾ãã¦ããããã«åä½ããï¼
while gets ... end
æ¨æºå ¥åããã¡ã¤ã«ã®åè¡ã«å¯¾ãã¦å¦çãè¡ãããå ´åã«ä¾¿å©ï¼getsã®çµæã¯$_ã«æ ¼ç´ãããï¼
$ ruby -ne 'puts $_ if $_.include?("mickey24")' foo.txt
-p : åè¡ãã¨ã«å¦çï¼åºå
-nã¨ã»ã¼åæ§ã ãï¼åã«ã¼ãã®æå¾ã§
print $_
ãå®è¡ãããããã«ãªãï¼æ¨æºå ¥åã®åè¡ã«å¯¾ãã¦å¦çãè¡ãã¤ã¤åºåãã¦ããå ´åã«ä¾¿å©ï¼
$ ruby -pe '$_.upcase!' foo.txt
-l : å ¥åï¼åºåã®æ¹è¡æåã®èªåå¦ç
以ä¸ã®2ã¤ã®å¹æãããï¼
- $\ã$/ã¨åãå¤ã«ãªãï¼ã¤ã¾ãprintã®åºåçµæã®æ«å°¾ã«getsã®è¡åºåãæå(ããã©ã«ãã¯æ¹è¡æå"\n")ãä»ãããã«ãªã
- -nã-pãã»ããããã¦ããå ´åï¼getsã§èªã¿è¾¼ã¾ããåè¡ã«å¯¾ãã¦String#chop!ãå¼ã³åºããã
getsã§èªã¿è¾¼ãã $_ã®æ«å°¾ã«"\n"ãä»ãã¦ã»ãããªãæãï¼-pã§åºåãããæååã«èªåçã«"\n"ãä»ãã¦ã»ããæã«ä½¿ãã¨ãããï¼
-a : ãªã¼ãã¹ããªããã¢ã¼ã
-nã-pã¨çµã¿åããã¦ä½¿ãï¼ãªã¼ãã¹ããªããã¢ã¼ãããªã³ã«ãªãï¼åã«ã¼ãã®å é ã§
$F = $_.split
ãå®è¡ãããããã«ãªãï¼
$ ruby -aple '$_ = $F.join(",")' foo.tsv
-aã使ãå ´åã¯-lãçµã¿åããã¦ä½¿ãæ¹ãããã ãã(-lããªãã¨splitçµæã®æå¾ã®è¦ç´ ã«ã ãæ¹è¡æåãä»ãã¦ãã¾ã)ï¼
-Fregexp : splitã®åºåãæåã®å¤æ´
å ¥åãã£ã¼ã«ãã»ãã¬ã¼ã¿($;)ã«regexpãä»£å ¥ãï¼splitã§ããã©ã«ãã§ä½¿ãããåºåãæåãå¤æ´ããï¼-aã¨çµã¿åãããã¨ä¾¿å©ï¼
$ ruby -F, -aple '$_ = "#{$F[0]}, #{$F[2]]}"' foo.csv
ãã®ä»
-r feature : require
ã¹ã¯ãªããå®è¡åã«featureãrequireããï¼
$ ruby -r base64 -e 'puts Base64.encode64("mickey24")'
-Kc : ã¨ã³ã³ã¼ãã£ã³ã°ã®è¨å®
å¤é¨ã¨ã³ã³ã¼ãã£ã³ã°ã¨ã¹ã¯ãªããã¨ã³ã³ã¼ãã£ã³ã°ãè¨å®ããï¼æå®ã§ããã¨ã³ã³ã¼ãã£ã³ã°ã¯ä»¥ä¸ã®éãï¼
- -Ke : EUC-JP
- -Ks : Windows-31J, CP932
- -Ku : UTF-8
- -Kn : ASCII-8BIT, BINARY
$ ruby -Ku -e 'puts "ããã¿ã¿"'
-i[extension] : å ¥åãã¡ã¤ã«ã®ä¸æ¸ã
å ¥åãã¡ã¤ã«ãåºåçµæã§ä¸æ¸ãããï¼
$ ruby -i -pe '$_.gsub!("\r\n", "\n")' foo.txt
å ã®ãã¡ã¤ã«ãæ®ãã¦ããå ´åã¯-iã®ç´å¾ã«æ¡å¼µåãæå®ããï¼ä»¥ä¸ã®å ´åã¯å ã®ãã¡ã¤ã«ãfoo.txt.bakã¨ãã¦ä¿æãããï¼
$ ruby -i.bak -pe '$_.gsub!("\r\n", "\n")' foo.txt
ã³ãã³ãã©ã¤ã³å¼æ°ã¾ã¨ã
-e | ã³ãã³ãã©ã¤ã³ããã¹ã¯ãªãããæå® |
---|---|
-n | åè¡ãã¨ã«å¦ç |
-p | åè¡ãã¨ã«å¦çï¼åºå |
-l | å ¥åï¼åºåã®æ¹è¡æåã®èªåå¦ç |
-a | ãªã¼ãã¹ããªããã¢ã¼ã |
-F | splitã®åºåãæåã®å¤æ´ |
-r | require |
-K | ã¨ã³ã³ã¼ãã£ã³ã°ã®è¨å® |
-i | å ¥åãã¡ã¤ã«ã®ä¸æ¸ã |
å ·ä½ä¾
foo.txtã®åè¡ã«è¡çªå·ãä»ãã¦æ¨æºåºåã«åºåããï¼
$ ruby -ne '$l ||= 1; puts "#{$l}: #{$_}"; $l += 1' foo.txt
foo.txtã®åè¡ã®"\r\n"ã"\n"ã«ç½®ãæãï¼foo.txtãä¸æ¸ãããï¼
$ ruby -i -pe '$_.gsub!("\r\n", "\n")' foo.txt
ã¦ã¼ã¶"mickey24"ãä¿æããããã»ã¹ã®IDãæ¨æºåºåã«åºåããï¼
$ ps aux | ruby -anle 'puts $F[1] if $F[0] == "mickey24"'
ã«ã³ãåºåãã®foo.csvã®3åç®ã24以ä¸ã®è¡ã®ã¿æ¨æºåºåã«åºåããï¼
$ ruby -F, -anle 'puts $_ if $F[2].to_i >= 24' foo.tsv
以ä¸
-nï¼-pï¼-aãããã使ããããã«ãªãã¨åçã«ã¯ã³ã©ã¤ãã¼ãæ¸ãããããªãã®ã§ï¼æ¯éãã¹ã¿ã¼ãã¦ããããï¼
ããã§æããRubyã®ã³ãã³ãã©ã¤ã³å¼æ°ã¯Perlã®ããã¨ã»ã¼åããªã®ã§ï¼ãããã®ãã¨ãè¦ãã¦ããã°Perlã§ãã¯ã³ã©ã¤ãã¼ãæ¸ããããã«ãªãã¨æãï¼