2017-02-22 53 views
5

: Ruby-a komut satırı anahtarı nedir? <a href="https://linux.die.net/man/1/ruby" rel="noreferrer">man</a> sayfasından

-a  Turns on auto-split mode when used with -n or -p. 
     In auto-split mode, Ruby executes 
       $F = $_.split 
     at beginning of each loop. 

Bazı sorulara

akla gelen:

  • Ne -a-n veya -p olmadan kullanılırsa ne olur?
  • $F nedir?
  • Döngünün sonunda ne olur?
  • split için hangi karakterin seçili olduğunu nasıl kontrol ederim?
  • -a nasıl kullanılır? Başka reference page itibaren

:

$F  The variable that receives the output from split when -a is specified. 
     This variable is set if the -a command-line option is specified 
     along with the -p or -n option. 

Hala -a anahtarı ne olduğundan emin değilim. Bir açıklama için minnettarım ama bazı örnekleri daha çok takdir ediyorum. Denedim

bazı şeyler:

$ echo foo_bar_bar | ruby -ae 
ruby: no code specified for -e (RuntimeError) 
$ echo foo_bar_bar | ruby -ap 
$ echo foo_bar_bar | ruby -ap '$_' 
ruby: No such file or directory -- $_ (LoadError) 

cevap

4

Otomatik bölünmüş mod -a anahtarı ile etkindir. awk'un varsayılan olarak yaptığı metin işleme türünü sağlar. (Alan ayracı göre

  1. otomatik alanlarına, çizgi, $_ bölmek: Otomatik Bölünmüş modda
    , yakut argümanlar veya bir defada stdin bir satır olarak verilen dosyaları okuyacak ve her hat için
  2. tarafından belirlenen sonucu, komut satırı aracılığıyla sağlanan eylemleri $F
  3. olarak atayın.

Tüm satırlar işlendikten sonra, program END block'dan çıkar veya çalıştırır. Bu cevabı bir example için görün.

Otomatik mod split sekmeli metin birçok records (record separator değiştirilmediği sürece records çizgilerdir) sahip dosyalar ve her satırda sınırlandırılmış fields bir dizi ile çalışmak için yararlıdır. Örneğin, içerikli bir file düşünün:

ADG:YUF:TGH 
UIY:POG:YTH 
GHJUR:HJKL:GHKIO 

Sonra ruby -F: -a -n -e 'puts $F[2]' file baskılar üçüncü alanını her satırı için:

Bu durumda
$ ruby -F: -a -n -e 'puts $F[2]' file 
TGH 
YTH 
GHKIO 

, -F:: için saha ayırıcısını ayarlar. $F, kayıtların ($_) ayrıldıktan sonra alanların geçtiği dizidir. -e'dan sonraki eylemler, ayrıldıktan sonra her satır için yürütülür.

ruby cli anahtarları

perl kişilerce çok benzerdir. , perldoc perlrun bkz perl cli bu özellik daha rahat hale getirir. Örneğin, -a -n (veya -p), perl, olmadan yararlı olmadığından, -a dolaylı olarak, -n sağlar. Bu ruby durum böyle değildir, tüm anahtarlar açıkça geçirilmelidir. awk one liners için işlem görünüm bu tür ile yapılabilir güzel şeyler örnekler için .

Ayrıca ruby cli command-line options geçirmek için Unix kuralları aşağıdaki gibidir:

Geleneksel olarak, UNIX komut satırı seçenekleri, bir ya da daha fazla küçük harf tarafından izlenen bir çizgi oluşur.

Yani -a ve -nswitches ve -eflag aynı sonucu elde etmek kombine edilebilir: Bu ilginç ise

$ ruby -F: -ane 'puts $F[2]' file 
TGH 
YTH 
GHKIO 

, diğer bazı ruby one liners.

kontrol