GNU grep'in -X seçeneğinin asıl amacı nedir ve neden belgelendirilmemiştir?


58

Okuyarak bu soruyu , ben GNU olduğunu keşfettiler grepbir sahip -Xbir argüman beklemektedir seçeneği. Garip bir şekilde, ne man sayfasında ne de bilgi sayfasında bahsedilmiyor.

Kaynak koduna bakıldığında , --helpçıktının tam ortasında şu yorumu var :

/* -X is deliberately undocumented.  */

Ayrıca bakıldığında anlaşılmaktadır -X matcherseçenek regexp için kullanılan motoru ayarlar , matchervarlık birini grep , egrep, fgrep, awk, gawk, posixawkve perl(sürümü 2.25 itibariyle).

Bu değerlerin bazıları kesinlikle mevcut seçenekler özdeş (yani vardır grep -G, grep -E, grep -Fve grep -P). Öte yandan, üç awkdeğişkenin buna karşılık gelen seçenekleri yoktur.

Birisi bu seçeneğin asıl amacının ne olduğunu biliyor mu, özellikle awkregexp motorlarından biriyle ? Birisi bana neden kasten belgelenmediğini söyleyebilir mi?


6
İlginç keşif! Belgelenmemiş olarak bırakma amacının, gelecekteki sürümlerden istedikleri zaman ve önceden haber vermeksizin çıkarmakta özgür olmaları için olduğundan şüpheleniyorum. Bir GNU belgelenmemiş seçeneğinin başka bir örneği, -EBSD sed ile uyumluluğu sağlayan GNU sed içindir. ( -EPOSIX resmi olarak kabul edip etmediği takdirde kaldırıldığını belgelemeyi bekliyorum .)
John1024

3
@ John1024 ile aynı fikirdeyim, ancak kesin olarak cevaplayabilecek tek kişi 7 Şubat 2005'te -Xkasten belgesiz olduğunu belgeleyen Stepan Kasal olsa da . (Ona sormak istersen e-posta adresi değişmedi.)
Wildcard

3
Bunu git tarihine kadar izlemeye çalıştım, ama grep'in ilk gitme taahhüdünden önce eklenmiş olduğu ortaya çıktı (06b9f7e683e7650804cadd9a4c5cf6bff6c89625'te 3 Kasım 21:38:52 1998'den itibaren mevcuttu). Muhtemelen önceki VCS'yi git'e itiraf ettiler, açıkçası git'i önceden olduğu gibi.
derobert

1
Ayrıca grep 2.0 hangi bulunacak en eski ftp.gnu.org/gnu/grep/?C=M;O=A
derobert

3
... ancak 1.6'da oldlinux.org/Linux.old/distributions/TAMU/TAMU-1.0D/src/tar/… adresinde buldum (not: bu kodun gerçekliğini doğrulamak için hiçbir çaba göstermedim) 1.6 (1992) ile 2.0 (1993) arasında bir yere gelmiş gibi görünüyor
derobert

Yanıtlar:


67

Amacı, GNU’da uygulanan çeşitli eşleştiricilere grepbir şekilde veya başka bir biçimde, özellikle de test amaçlı olarak başka türlü bulunmayan AWK eşleştiricilere erişim sağlamaktır (bkz . Ve eşleştiricilerin eklenmesini açıklayan 16481 no.lu hataya bakınız ).gawkposixawk

Ancak şu anda buggy, belgesiz olarak belgelenmesinin nedeni budur :

-0500, 04: 06:04 PM 27 Ocak 2005 Perşembe günü Charles Levert şunları yazdı:
> '-X' seçeneği ve özellikle "awk" eşleştirici
> ("-X awk") ile kullanımı belgelenmemiş.

lütfen belgesiz bırakın.

-X awk dışında herhangi bir yeni işlevsellik sağlamaz.

Ve awk regexps uygulaması mükemmel değil bence.

Yeni GNU regex, AWK tarzı sözdizimini ayarlamak için bazı yöntemler içerir, evet. Yine de gawk doğrudan kullanmaz: önce regex'i ayrıştırır.

Özellikle, awk regexps, NNN'nin sekizlik bir değer olduğu kaçış dizilerine \ NNN izin verir. Böylece / \ 040 / boşluk eşleşir. grep -X awk bunu desteklemiyor gibi görünüyor.

Korkarım regex.c bu kaçış dizilerini desteklemiyor.

Bu özelliği belgelendirmeye (ve böylece desteklemeye karar vermeden) önce regex'lerin awk regex'lerle tam olarak uyumlu olduğundan emin olmamız gerekir.

Bence başıma değmez.

Stepan

Bir izlem eklenecek açıklama istedi ve biraz daha arka plan sağladı -Xseçeneği:

Benim kendi eğilimim, sadece -X'in tamamen kaldırılmasını önermektir. Asıl yazar tarafından test amaçlı eklenmiş olduğundan şüpheleniyorum. Kalacaksa, en azından böyle bir yorum ekle.

/* -X is undocumented on purpose. */

çözümlenmiş bir konunun gelecekteki tartışmasını önlemek için.

Arnold

hangi Stepan bundan kısa bir süre sonra yaptı .


3
Güzel arkeolojik eserler, teşekkür ederim Stephen.
xhienne

2
Teşekkürler :-). Iz maalesef grep 2.0 durur; -XMuhtemelen DFA'nın yeniden yazmasının bir yan etkisi olarak tanıtılan versiyonun izlenimini edindim, ancak değişiklik detayları kısa.
Stephen Kitt

7
"Çözümlenmiş bir konunun gelecekteki tartışmasını önlemek için." Bu nasıl çalıştı? ;)
Brock Adams

1
"-X belgelenmemiş olduğundan, buggy" daha iyi bir seçim olamaz mıydı?
JAB
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.