Bu tr komutundaki noktalar ne işe yarar: tr… AZ A-ZA-Z <<< “JVPQBOV” (13 noktalı)


18

trBazı rot13 dönüşümü yapmak için kullanmak istiyorum . Bu komutu güzelce anlayabiliyorum:

tr A-Za-z N-ZA-Mn-za-m <<< "URYC ZR CYRNFR"

hangi çıktı HELP ME PLEASE, ama bu diğer komut nasıl aynı rot13 dönüşüm üretebilir anlayamıyorum:

tr .............A-Z A-ZA-Z <<< "URYC ZR CYRNFR"

İki sorum var:

  1. İkinci trkomutun ardındaki sihir nedir ?
  2. İkinci komut, tıpkı ilk komut gibi, hem küçük hem de büyük harf için nasıl çalışır?

13 nokta olduğunu biliyorum. Bilmek istediğim nasıl çalıştığı. Kılavuzda noktalar hakkında hiçbir açıklama yok
Frederico Oliveira

4
giriş metninizde bir
noktaya rastlamamanızı umarsanız

1
FWIW kısa formda tr [.*13].A-Z A-ZA-Zolduğu gibi çalışıyortr .............A-Z A-ZA-Z
iruvar

Yanıtlar:


17

Aşağıdaki gibi çalışır:

SET1-> .............ABCDEFGHIJKLMNOPQRSTUVWXYZ
SET2-> ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLM

Yani trtercüme SET1edecek SET2.

Bu birinciye eşdeğerdir, çünkü 1313 nokta olduğu için birimler tarafından da kaymaktadır .

Küçük harfleri dahil etmek için, SET1benzer bir ofsetle yerleştirmeniz gerekir, yani:

.............ABCDEFGHIJKLMNOPQRSTUVWXYZ..........................abcdefghijklmnopqrstuvwxyz

ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklm

Yani 26 arasındaki noktalar var Zve ayarım büyük harf ve yarım küçük harfli alfabe kapsayan. Yani trkomutun kendisi şöyle olacaktır:

tr .............A-Z..........................a-z A-ZA-Za-za-z

14

@Prvt_Yadv yanıtlarında söylediği gibi, 13 nokta olduğu için işe yarıyor.

Setler

First set:  .............ABCDEFGHIJKLMNOPQRSTUVWXYZ
Second set: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ

Nokta özel bir karakter değildir, bu nedenle girişinizde bir nokta varsa, o da çevrilecektir. trSahip olduğum sürümde , ikinci kümedeki son karşılık gelen karakter, bu durumda bir M:

$ echo URYC ZR CYRNFR. | tr .............A-Z A-ZA-Z
HELP ME PLEASEM

(Farklı bir sürümünün trset 2'deki ilk eşleme karakterini kullanabileceğini düşünebilirim, bu da bir verir A.)

İkinci sorunuzu cevaplamak için , ilk kümede küme 2'de kalan büyük harfleri "kullanmak" için 13 noktaya daha ihtiyacınız vardır:

First set:  .............ABCDEFGHIJKLMNOPQRSTUVWXYZ.............
Second set: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ

o zaman deseni tekrarlayabilirsiniz:

First set:  .............ABCDEFGHIJKLMNOPQRSTUVWXYZ..........................abcdefghijklmnopqrstuvwxyz
Second set: ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz

bu da bize:

tr .............A-Z..........................a-z A-ZA-Za-za-z

Ve bu yüzden:

$ echo Uryc zr cyrnfr | tr .............A-Z..........................a-z A-ZA-Za-za-z
Help me please

Şahsen, sorunuzda bunu yapmanın ilk yolunun daha basit olduğunu düşünüyorum!

İlk yol, girişteki başka karakterleri de dönüştürmez. Örneğin, karşılaştırın:

$ echo Uryc zr cyrnfr. | tr .............A-Z..........................a-z A-ZA-Za-za-z  
Help me pleasem

ile

$ echo Uryc zr cyrnfr. | tr A-Za-z N-ZA-Mn-za-m
Help me please.

1

Tamam, @Prvt_Yadv sayesinde noktaları anlayabildim. İşte ilk soru cevabı:

İkinci trkomutun ardındaki sihir nedir ?

13 nokta, ikinci setten ilk 13 harfe eşleştiriliyor. Yani

tr .............A-Z A-ZA-Z Aşağıdaki setleri üretecektir:

SET1 -> .............ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> ABCDEFGHIJKLMNOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZ

Girişinizde nokta yoksa, bu ikameyi kullanmayacağınız için başlangıç ​​sırasını atabilirsiniz. Sonra setler şöyle olur:

SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> NOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZ

Ancak ilk set zaten 26 harfin tümünü içerdiğinden ve set2 tekrarlayan harflere sahip olduğundan, bunlar da atılır ve sonunda olur

SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> NOPQRSTUVXWYZABCDEFGHIJKLM

Hangi rot13 ikamesi ve ilk komuta aynı (burada küçük vakalarla uğraşmamak dışında). Aynı mantık sorunun başlığı için de uygulanabilir:

tr ...A-Z A-ZA-Z <<< “JVPQBOV” setleri üretecekti:

SET1 -> ...ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> ABCDEFGHIJKLMNOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZ

İlk sırayı ve sondaki tekrar eden harfleri atarak:

SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZ
SET2 -> DEFGHIJKLMNOPQRSTUVXWYZABC

Hangi rot3 ikamesi.

Şimdi ikinci soru için:

İkinci komut, tıpkı ilk komut gibi, hem küçük hem de büyük harf için nasıl çalışır?

Bunu yapmak için, başlangıçta çürük ve 26 noktanızı üst sıra ile alt sıra arasında eşleştirerek istediğiniz sayıda nokta koyabilirsiniz:

tr ........A-Z..........................a-z A-ZA-Za-za-z

Bu başarıyla duyarsız bir çürük oluşturur8. Bunun neden işe yaradığını görselleştirmek için setleri görelim:

SET1 -> ........ABCDEFGHIJKLMNOPQRSTUVXWYZ..........................abcdefghijklmnopqrstuvxwyz
SET2 -> ABCDEFGHIJKLMNOPQRSTUVXWYZABCDEFGHIJKLMNOPQRSTUVXWYZabcdefghijklmnopqrstuvxwyzabcdefghijklmnopqrstuvxwyz

Nokta eşleme ve sondaki harfler hariç:

SET1 -> ABCDEFGHIJKLMNOPQRSTUVXWYZabcdefghijklmnopqrstuvxwyz
SET2 -> IJKLMNOPQRSTUVXWYZABCDEFGHijklmnopqrstuvxwyzabcdefgh

Şimdi hem büyük hem de küçük harf için çalışıyor :)

Çalışmasını sağlamanın başka bir yolu trda aşağıdaki gibi iki komut kullanmaktır :

tr .............A-Z A-ZA-Z <<< "ABJ V hqrefgnaq" | tr .............a-z a-za-z

@İruvar tarafından nokta ikamesini kullanma konusunda bir uyarı verildi: giriş dizisinde nokta olduğunda bu komut beklendiği gibi çalışmaz. Bunun nedeni, noktaların diğer harflerle eşleştirilmesidir ve trdeğişiklik yaparken , giriş noktasını son eşlenen harfe değiştirir. Ama aslında noktalardan başka bir karakter kullanabilirsiniz. Yani, trkomutunuzda nokta kullanmak bir sorunsa, @örneğin kullanabilirsiniz. Bu kadar iyi çalışır:

tr @@@@@@@@@@@@@A-Z A-ZA-Z <<< "GUNAX LBH NYY..."

3
"Noktaların yerini bir sayıdan başlayarak bir dizi harfle değiştirdiğini" nasıl değerlendirdiğinizden emin değilim; bu hiç de böyle değil. Hiçbir sihir yok; Prvt_Yadv açıkladığı gibi, iki set vardır ve tr2 televizyondan televizyona 1'den haritalama her zaman olduğu gibi, ancak bu durumda karakteri eşlediyseniz .için Ave ayrıca Bve ayrıca ... ve ayrıca M. Bu, girişinizde a içermediği için önemli değil ., ancak eğer yapıldıysa M( trbelirli bir giriş için belirttiğiniz son çıkışı kullanır)
Michael Mrozek

Açıklama için teşekkürler. Hatalarımı düzeltmek için cevabı güncelledim :)
Frederico Oliveira

1
Bu programın davranışını belirlemek için (ilk) bilimi kullanma girişimlerinize hayranım, ancak gelecekte mümkün olduğunca çok sayıda farklı hipotez bulmalı ve bunları kullanmaya çalışmadan önce hepsini ayırt etmek için testler tasarlamalısınız . Aksi takdirde, kafanız karışır ve modelinizi en az değişiklikle uyarlarsanız, modeliniz sadece bir dizi özel durum olana kadar sonraki sonuçları açıklarsınız.
wizzwizz4
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.