Daha çox

İşləməyən shapefile mənbə skriptini dəyişdirin


Python üçün çox yeniyəm, xahiş edirəm bu sadə bir səhvdirsə, məni bağışla. Məndə hər birinin eyni mənbəyə istinad edən bir neçə təbəqə olduğu bir neçə MXD var. Ancaq o vaxtdan bu məlumatları yeni bir qovluğa köçürdüm. Bənzər təbəqələri avtomatik olaraq yeniləmək üçün bir ssenari yazdım.

Ssenari işləyir, amma işlənib-işləmədiyini yoxladığımda qatların heç biri yenilənmir. Nəyin səhv olduğuna əmin deyiləm.

MXD-ləri axtarmaq üçün arcpy, os #workspace işlərini daxil edin Workspace = r "M:  TEAM_GIS  EDKM  Projects  mmo1065_south_habitat_mapping  20140708_Update_3_QA  3_Working_GIS_Files  MXD" arcpy.env.workspace = filespace "* .mxd") mxdList yazdır # siyahıdakı hər bir MXD-də spesifik shapefile üçün yeni bir əlaqə. mxdListdəki fayl üçün: filePath = os.path.join (Workspace, file) dəyişdirmək üçün #set map sənəd "DATASOURCE"): if lyr.dataSource == r "M:  TEAM_GIS  EDKM  Projects  mmo1065_south_habitat_mapping  20140708_Update_3_QA  3_Working_GIS_Files  WP1  MMO_South_Plan_Areas.jectp": mmo1065_south_habitat_mapping  20140708_Update_3_QA  3_Working_GIS_Files  WP1 "r" M  TEAM_GIS  EDKM  Layihələr  mmo1065_south_habitat_mapping  20140708_Update_3_QA  3_Working_GIS_Files  SHP ") əgər lyr.dataSource == r" M  TEAM_GIS  EDKM  Layihələr  mmo1065_south_habitat_mapping  20140708_Update_3_QA  3_Working_GIS_Files  WP1  Land.shp "lyr.findAndReplaceWorkspacePath (r" M  TEAM_GIS  EDKM  Layihələr  mmo1065_south_habitat_mapping  20140708_Update_3_QA  3_Working_GIS_Files  WP1 "r" M  TEAM_GIS  EDKM  Layihələr  mmo1065_south_habitat_mapping  20140708_Update_3_QA  3_Working_GIS_Files  SHP ") arcpy.RefreshTOC () arcpy. RefreshActiveView () mxd.save () çap "Uğur"

@Luke tərəfindən şərh edildiyi kimi və ikimiz də çalışarkən:

Əgər bu sizin həqiqi kodunuzdursa, arcpy.mapping.ListLayers (mxd): for for lyr: loop, yalnız mxdList: loop içərisində olan faylın içində olması indent edilmədiyi üçün son mxd üzərində işləyəcəkdir.

Kodunuzun yerinə cəhd edin:

MXD-ləri axtarmaq üçün arcpy, os #workspace işlərini daxil edin Workspace = r "M:  TEAM_GIS  EDKM  Projects  mmo1065_south_habitat_mapping  20140708_Update_3_QA  3_Working_GIS_Files  MXD" arcpy.env.workspace = filespace "* .mxd") mxdList yazdır # siyahıdakı hər bir MXD-də spesifik shapefile üçün yeni bir əlaqə. mxdListdəki fayl üçün: filePath = os.path.join (Workpace, file) dəyişdirmək üçün #set map sənəd "DATASOURCE"): if lyr.dataSource == r "M:  TEAM_GIS  EDKM  Projects  mmo1065_south_habitat_mapping  20140708_Update_3_QA  3_Working_GIS_Files  WP1  MMO_South_Plan_Areas.jectp": mmo1065_south_habitat_mapping  20140708_Update_3_QA  3_Working_GIS_Files  WP1 "r" M  TEAM_GIS  EDKM  Layihələr  mmo1065_south_habitat_mapping  20140708_Update_3_QA  3_Working_GIS_Files  SHP ") əgər lyr.dataSource == r" M  TEAM_GIS  EDKM  Layihələr  mmo1065_south_habitat_mapping  20140708_Update_3_QA  3_Working_GIS_Files  WP1  Land.shp "lyr.findAndReplaceWorkspacePath (r" M  TEAM_GIS  EDKM  Layihələr  mmo1065_south_habitat_mapping  20140708_Update_3_QA  3_Working_GIS_Files  WP1 "r" M  TEAM_GIS  EDKM  Layihələr  mmo1065_south_habitat_mapping  20140708_Update_3_QA  3_Working_GIS_Files  SHP ") mxd.save () print" Uğur "

Arcpy.RefreshActiveView () və arcpy.RefreshTOC () - nı sildim, çünki yalnız MapDocument obyektiniz "CURRENT" istifadə edərək yaradıldıqda bir şey edirlər.


Normal ifadələrdən istifadə edərək tapın və dəyişdirin

Bir çox istifadəçi defoltu olan bir sənədim var. Bəzi mətnləri dəyişdirmək istəyirəm, amma uyğunlaşdırıcı və əvəzedici ilə görüşməkdə çətinlik çəkirəm. Aşağıdakı nümunədən istifadə edərək:

# Trackpad əvəz etmək istəyirəm:. "Trackpad:." işlədərək.

Problemi həll edərək regex test cihazından istifadə edərək bir şey düşündüm:

Bunu Vim-də istifadə etsəm, mənim üçün işləmir:

Düşünürəm ki, problemim iki xüsusi suala qədər həll olunur:

  1. N simvol axtarmaqdan necə qaça bilərəm və bunun əvəzinə # axtarış qrupunun sonunda görünmədiyinə əmin ola bilərəm?
  2. Tutma qruplarını necə səmərəli istifadə edə bilərəm?

Aşağıda əla cavablar var. Üçü arasında seçim etmək çətindir, amma seçdiyim cavabı orijinal xüsusiyyətlərim üçün ən dəqiq hesab edirəm. Onlara münasibətinizi bilmək üçün hər üç cavabı faktiki sənədlə sınamağınızı məsləhət görürəm.


3 Cavablar 3

İstifadə etməyi təklif edirəm cəmri dəyişdirin (bu mahiyyətcə a delete ilə birləşdi append, əlavə yalnız aradakı son sətir üçün tətbiq olunsa da, burada tam olaraq istədiyiniz şeydir):

Burada yerində tənzimləmə (-i) üçün GNU sed sintaksisindən istifadə olunur. Bu c əmri əksinə standart və portativdir. GNU sed dəstəkləyir:

qeyri-standart bir uzantı olaraq.

Əvəzedici mətndə yeni xətt və arxa əyilmə simvollarından (əks əyilmə ilə) qaçmaq lazımdır.

GNU sed istifadə

3 uyğun bir sətirdən başlayan və 5 uyğun bir sətrə davam edən sətirləri Yeni Kodla əvəz etmək:

/ 3 /, / 5 / aralığındakı sətirlər üçün sətrin 5-ə uyğun olub olmadığını yoxlayırıq (bu qrupdakı son sətir olduğu mənasını verir) və əgər belədirsə, Yeni Kod əlavə etmək üçün əvəzləyirik. Əvəzetmə aparılmışsa, t əmri sed-ə əmrlərin sonuna atlamağı deyir (bu halda Yeni Kod yazılır). Əks təqdirdə, d əmri sed-ə sətri silməsini bildirir.

Bütün digər sətirlər normal çap olunur.

Sənədi yerində dəyişdirmək üçün -i seçimi istifadə edilə bilər:

Awk istifadə

Awk əmri / 3 /, / 5 / aralığındakı satırlara xüsusi baxır. Bu aralığdakı sətirlər üçün f-nin sıfır olub olmadığını (yəni, əgər! F doğrudur) yoxlayırıq və əgər varsa, Yeni Kodu yazdırırıq və f-i 1-ə qoyuruq, sonra qalan əmrləri atlayırıq və növbəti sətir.

/ 3 /, / 5 / aralığından kənar sətirlər üçün heç bir sıçrayış edilmir və 1 sətrin yazdırılmasına səbəb olur. Daha ətraflı olaraq, 1 şərtdir. 1 sıfır olmadığına görə şərt doğrudur. Heç bir əməliyyat şərtlə əlaqələndirilmədiyi üçün sətri yazdırmaq üçün varsayılan əməliyyat yerinə yetirilir. Beləliklə, 1 xətt yazmaq üçün stenoqrafiyadır.

Bir faylı yerində dəyişdirmək üçün -i inplace seçimi GNU awk 4.1 və ya yuxarıda istifadə edilə bilər:


Adam pax

. Hər iki fayl vaxtını istifadə edən zaman müqayisələri, zamana əsaslanan bir artımlı arxiv yaratmaq üçün istifadə edildikdə faydalıdır (yalnız müəyyən bir vaxt aralığında dəyişdirilmiş fayllar arxivlənəcəkdir).

Bir zaman aralığı altı fərqli sahədən ibarətdir və hər sahə iki rəqəmdən ibarət olmalıdır. Format:

Cc ilin ilk iki rəqəmi (əsr) olduqda, yy ilin son iki rəqəmidir, ilk mm aydır (01-dən 12-dək), dd ayın günüdür (01-dən 31-dək) ), HH günün saatıdır (00-dan 23-dək), MM dəqiqə (00-dan 59-a qədər), SS isə saniyələrdir (00-dan 59-a qədər). Dəqiqə sahəsi MM tələb olunur, digər sahələr isə isteğe bağlıdır və aşağıdakı qaydada əlavə olunmalıdır:

SS sahəsi digər sahələrdən asılı olmayaraq əlavə edilə bilər. Zaman aralıkları cari zamana nisbətlidir, buna görə.

. bu gün və ya daha sonra 12: 34-də bir dəyişiklik və ya inode dəyişmə vaxtı olan bütün sənədləri seçəcəkdir.

Birinci -T vaxt aralığı təmin edilə bilər və ilk qarşılaşma ilə dayanma yoxlanılır.

. beləliklə, mənim nümunə əmrimdəki 11 nəfər bu günə nisbidir - bu günün tarixindən bir azdır - bu on ikincidir - qalanları isə standart bir "$ (date)" formatından sonra vergüldür.

. istisna olmaqla - və xatırlamağa dəyər olan son şey - Hədəf qovluğu üçün mütləq bir yol istifadə edirəm - və bunu etsəniz belə etməlisiniz. Sənədlər bütün istinadlar təyin olunmayan davranış nisbi hədəf yolları üçün - və ilk dəfə pax istifadə etməyə çalışanda mütləq bir yol istifadə edənə qədər bütün qəribə nəticələrlə qarışıqlıq içində bir saat ərzində nəfəsimin altında and içdim.


  • s = əvəz əmri
  • orijinal = əvəz edilməli olan sözü izah edən adi bir ifadə (və ya sadəcə sözün özü)
  • yeni = onu əvəz edəcək mətn
  • g = qlobal (yəni ilk hadisəni deyil, hamısını əvəz edin)

Buna nail olmağın bir çox yolu var. Simlərin dəyişdirilməsi ilə əldə etməyə çalışdığı şeyin mürəkkəbliyindən və istifadəçinin tanış olduğu alətlərdən asılı olaraq, bəzi metodlar digərlərindən daha çox üstünlük verilə bilər.

Bu cavabda burada göstərilən bütün nümunələri sınamaq üçün istifadə edə biləcəyiniz sadə input.txt faylından istifadə edirəm. Faylın məzmunu:

Bash həqiqətən mətn işlənməsi üçün nəzərdə tutulmayıb, lakin sadə əvəzetmələr parametr genişləndirmə yolu ilə edilə bilər, xüsusən burada sadə quruluşdan istifadə edə bilərik $ .

Bu kiçik skript yerində dəyişdirmə etmir, yəni yeni mətni yeni faylda saxlamalı və köhnə sənəddən və ya mv new.txt old.txt

Yan not: niyə IFS = oxu -r etdiyini maraqlandırırsınız. done & lt input.txt istifadə olunur, əsasən fayl sətir-sətir oxumaq üsuludur. İstinad üçün buna baxın.

Mətn işləmə proqramı olan AWK bu cür iş üçün olduqca uyğundur. Normal ifadələrə əsaslanan sadə əvəzetmələr və daha inkişaf etmişlər edə bilər. İki funksiyanı təmin edir: sub () və gsub (). Birincisi, yalnız ilk hadisəni əvəz edir, ikincisi - bütün simlərdəki hadisələri əvəz edir. Məsələn, bizdə bir kartof iki kartof varsa, bu nəticə olar:

AWK bir giriş sənədini arqument kimi götürə bilər, buna görə input.txt ilə eyni işləri görmək asan olar:

Sizdə olan AWK versiyasından asılı olaraq, yerindəcə düzəliş ola bilər və ya olmaya bilər, bu səbəbdən adi praktika yeni mətni saxlamaq və əvəz etməkdir. Məsələn buna bənzər bir şey:

Sed sətir redaktorudur. Həm də müntəzəm ifadələrdən istifadə edir, ancaq sadə əvəzetmələr üçün bunu etmək kifayətdir:

Bu alətin yaxşı tərəfi -i bayrağı ilə aktivləşdirə biləcəyiniz yerdəki düzəlişlərin olmasıdır.

Perl, tez-tez mətn işlənməsi üçün istifadə olunan başqa bir vasitədir, lakin ümumi təyinatlı bir dildir və şəbəkə, sistem idarəetməsi, masa üstü tətbiqləri və bir çox başqa yerlərdə istifadə olunur. C, sed, awk və digərləri kimi digər dillərdən bir çox anlayış / xüsusiyyət götürdü. Sadə əvəzetmə belə edilə bilər:

Sed kimi, perl də -i bayrağına malikdir.

Piton

Bu dil çox yönlüdür və müxtəlif tətbiqlərdə də istifadə olunur. Simlərlə işləmək üçün bir çox funksiyaya malikdir, bunların arasında əvəz () var, buna görə var = "Hello World" kimi dəyişən varsa, var.replace ("Salam", "Günaydın") edə bilərsən.

Fayl oxumağın və sətri dəyişdirməyin sadə yolu belə olacaq:

Bununla birlikdə, Python ilə, skriptin içərisindən də edə biləcəyiniz yeni bir fayla çıxış etməlisiniz. Məsələn, burada sadədir:

Bu skript input.txt ilə komanda sətri arqumenti olaraq çağırılmalıdır. Komut satırı arqumenti ilə python skriptini çalıştırmaq üçün dəqiq əmr olacaqdır

Əlbətdə ki, ./myscript.py-nin cari iş qovluğunuzda olduğundan əmin olun və ilk olaraq bunun chmod + x ./myscript.py ilə yürütülebilir olaraq ayarlandığından əmin olun.

Python da müntəzəm ifadələrə sahib ola bilər, xüsusən də daha inkişaf etmiş əvəzetmələr üçün istifadə edilə bilən re.sub () funksiyasına sahib re modulu var.

Bunu etmək üçün bir sıra fərqli yollar var. Biri sed və Regex istifadə edir. SED mətnin süzülməsi və dəyişdirilməsi üçün bir Axın Redaktorudur. Bir nümunə belədir:

& Lt strin və & gt strout-dan daha mənalı ola biləcək başqa bir yol borulardır!

5 qat daha sürətli. & ndash pbhj 22 oktyabr '17 saat 20: 14-də

Vim'i Ex rejimində istifadə edə bilərsiniz:

g hər sətirdəki bütün nümunələri əvəz edin

x Dəyişikliklər edilmişdirsə (varsa) yazın və çıxın

Awk-ın gsub əmri ilə,

Yuxarıdakı nümunədə, yerləşdiyi sütundan asılı olmayaraq bütün 1 lər 0 ilə əvəz olunur.

Müəyyən bir sütunda dəyişdirmə etmək istəyirsinizsə, bunu edin,

Yalnız birinci sütunda 1-i 0 ilə əvəz edir.

sed edir saxın editor, bununla | (boru) göndərmək standart axınlar (Xüsusilə STDIN və STDOUT) vasitəsilə onları proqram halında dərhal dəyişdirin və Unix fəlsəfə ənənələrində lazımlı bir vasitə halına gətirin, ancaq aşağıda göstərilən -i parametrindən istifadə edərək birbaşa faylları da düzəldə bilərsiniz.
Aşağıdakıları nəzərdən keçirək:

s / istifadə olunur stapılan ifadəni az ilə əvəz edin:

/ g "qlobal" deməkdir, yəni bütün xətt üçün bunu etmək lazımdır. / G-ni (s / few / asd / ilə tərk etsəniz, hər nə olursa olsun həmişə üç əyri olmalıdır) və az bir dəfə eyni sətirdə iki dəfə görünsə, yalnız ilk bir neçə asd olaraq dəyişdirilir:

Az kişi, az qadın, cəsur.

Asd kişilər, az sayda qadın, cəsur.

Bu, bəzi sətirlərin əvvəlində xüsusi simvolların dəyişdirilməsi kimi faydalıdır (məsələn, bəzi insanların e-poçt mövzularında əvvəlki materialı üfüqi nişanla sitat gətirmək üçün istifadə etdikləri simvolların əvəzini daha sonra sətirdə bir cəbri bərabərsizliyi qoyaraq) toxunulmamışdır), ancaq bunu göstərdiyiniz nümunədə hər yerdə az olur, əvəz olunmalıdır, buna sahib olduğunuzdan əmin olun / g.

Aşağıdakı iki seçim (bayraqlar) birinə birləşdirilir, -ie:

-i seçimi redaktə etmək üçün istifadə olunur mənn hello.txt sənədində yer.

-e seçimi göstərir expression / run command, bu halda s /.

Qeyd: Axtarış / dəyişdirmək üçün -i -e istifadə etməyiniz vacibdir. -İe etsəniz, 'e' hərfi əlavə edilmiş hər bir sənədin ehtiyat nüsxəsini yaradırsınız.


Burada, "cybernetnews" sözünün hər qovluğunda "cybernetnews" sözcüyünü "cybernet" ilə əvəz etmək üçün sed istifadə edirəm, qovluqdakı / home / user / directory /.

İcra qovluğundan rekursiv olaraq axtardığınız və yalnız müntəzəm, oxunaqlı, yazılabilir fayllarda işlədiyiniz daha ümumi bir dəyişiklik:

Axın redaktoru, sed, bu cür iş üçün güclü bir köməkçi proqramdır və mənim ilk seçimimdir, ancaq bunu Ubuntu əsaslı yerli tətbiqetmədən istifadə edərək adi bir mətn redaktorundan etmək istəsəniz, Jedit-ə baxmağınızı məsləhət görürəm. , Depolarda mövcuddur və konsolunuza yazaraq quraşdırıla bilər:

Jedit'i başladın, axtarış menyusunu seçin, menyu siyahısında, Kataloqda axtar düyməsini vurun, aşağıdakı informasiya qutusu sizə təqdim olunacaq:

Bu Notepad ++ ilə eynidir və eyni şeyi edir, inanıram ki, bu sizin istədiyiniz şeydir.


Birdən bir neçə fərqli dəyəri tapın və dəyişdirin

Birdən çox Text_1 və Text1 nümunələri olan bir sənədim var və hər ikisini də müvafiq olaraq Text_A və TextB ilə əvəz etməliyəm.

Hal-hazırda hər bir sənəddə iki Tap və dəyişdir funksiyasını yerinə yetirirəm ki, bunlardan biri Text_1-i tapıb Text_A ilə əvəz edir, digəri Text1-i tapıb TextB ilə əvəz edir.

"Tap və dəyişdir" i iki dəfə çalıştırmaq yerinə bir dəfəyə etmək üçün bir yol varmı?

Dreamweaver CS3 istifadə edirəm, amma Notepad ++, müntəzəm Notepad, OO Writer, MS Word daha asan olarsa. İdeal olaraq bunu Dreamweaver və ya Notepad ++ da edə bilərdim, amma işi başa çatdırmaq üçün başqa bir şey yükləməyə açıqam. Hər hansı bir komanda xətti işi görməməyimi və ya bir toplu sənəd yaratmamağı üstün tuturam (bunun fərqində olsam da, həqiqətən anlamıram).

Yuxarıdakı təsvirin aydın olmaması halında, icazə verin bu şəkildə izah edim.

Find & amp Replace çalıştırmaq istəyirəm 1 dəfə in 1 sənəd və bunu etmək istəyirəm BÜTÜN bu bir tap & amp dəyişdirin zamanı aşağıdakılardan:

  1. Tapın Mətn_1 və Dəyişdirin Text_A ilə
  2. Tapın Mətn1 və Dəyişdirin TextB ilə

Mən yox bir neçə sənəd arasında tapın və dəyişdirin.


9 Cavablar 9

Əslində sed ilə olduqca sadədir: bir sətir uyğun gəlsə, onu h köhnə boşluğa kopyalayın, sonra dəyəri əvəzləyin.
La $ t sətrində e x dəyişdirmə yeri və naxış boşluğunu dəyişdirin, sonra boş olub olmadığını yoxlayın. Boş deyilsə, demək ki, əvəzetmə onsuz da edilmişdi, buna görə heç bir şey edilməyəcək. Boşdursa, heç bir uyğunluq tapılmadığına görə naxış boşluğunu istədiyiniz ilə əvəz edin dəyişən = dəyər sonra gözləmə buferindəki cari sətrə əlavə edin. Nəhayət, e x yenidən dəyişir:


Əvəziniz üçün yalnız boşluq əlavə etmək istəyirsiniz. [: space:] orada işləməyəcək, çünki bir xarakter sinfi üçün bir kısaltmadır və regex mühərriki orada hansı simvol qoyacağını bilmir.

+ Regexdə qaçmaq lazımdır, çünki sed'in regex mühərriki ilə + normal bir xarakterdir, + isə 'bir və ya daha çox' üçün metakarakterdir. Səhifə 86-da Adi ifadələrin mənimsənilməsi, Jeffrey Friedl, ed və grep-in qaçan mötərizələrdən istifadə etdiyini dilə gətirərək qeyd etdi, çünki "Ken Thompson, normal ifadələrin ilk növbədə C kodu ilə işləmək üçün istifadə ediləcəyini hiss etdi. Güman edirəm ki, artı işarəsi ilə eyni düşüncədədir, ona görə də onu metakarakter kimi istifadə etmək üçün qaçmaq lazımdır. Buna görə ələ keçirmək asandır.

Əgər siz qaçmalısınızsa +,? , | , (, və). və ya genişləndirilmiş regex istifadə etmək üçün -r istifadə edin (sonra sed -r -e "s / [[: space:]] + / / g" və ya sed -re "s / [[: space:]] + kimi görünür / / g "


bura get
http://gnuwin32.sourceforge.net/packages.html
SED-ə qədər aşağıya fırladın İçində olduğunuz zaman da coreutils yükləyin.

bu əmr qlobal səviyyədə və hər sətirdə a ilə b əmrini əvəz edəcəkdir. belə ki, yalnız xəttdəki ilk hadisə deyil.

VBScript müntəzəm ifadələri dəstəkləyir, tapa və əvəz edə bilərsiniz.

Bunu etmək üçün Windows üçün pulsuz bir komanda xətti vasitəsi yazdım. Rxrepl adlanır, Unicode və fayl axtarışını dəstəkləyir. Bəziləri bunu faydalı bir vasitə hesab edə bilər.

rxrepl, Perl uyğun normal ifadələr (PCRE) istifadə edərək mətn sənədlərindəki mətni axtarmaq və əvəz etmək üçün bir Microsoft Windows komanda xətti vasitəsidir.

Aşağıdakı xüsusiyyətlərə malikdir:

  • Perl Uyğun Adi İfadələrdən istifadə edərək axtarın
  • Əvəzedici mətndə qrup uyğunluğundan istifadə edin
  • Windows və Unix sətir sonlarını dəstəkləyir
  • Unicode dəstəyi
  • Çoxsaylı axtarışları / əvəzetmə arqumentlərini qəbul edir
  • Seçimlər seçim sənədində verilə bilər
  • Faylları axtarın
  • Önizləmə rejimi
  • Sətir və tam fayl uyğunluğu rejimləri

Scripting Guy bunu PowerShell-də necə ediləcəyini əhatə edir (ən son Windows əməliyyat sistemlərində əlavə yükləmə yoxdur, ehtimal ki, artıq quraşdırmısınız).

Başlayın, aşağıdakıları çalıştırın (a * ilə @ əvəz olunsun):

Bu, pozitiv və mənfi baxış daxil olmaqla .NET müntəzəm ifadələrini dəstəkləyir və hər şey notepad ++ versiyası 6.x-dan əvvəl regex ilə dəstəklənmir (notepad ++ sevdiyim qədər).

Bunun üçün fnr.exe tapdım. GUI və komanda xətti var.

Birdən çox sənəddəki mətni tapmaq və dəyişdirmək üçün açıq mənbə vasitəsi.

Xüsusiyyətləri

  • Tək fayl yükləmə - fnr.exe (127kb)
  • Windows tətbiqindən istifadə edərək və ya əmr sətri vasitəsilə birdən çox sənəddəki mətni dəyişdirin
  • Yalnız uyğunluqların harada tapıldığını görmək üçün tapın
  • Hərflərə həssas axtarış
  • Bir qovluqdakı faylların axtarışı və ya təkrarlanan alt qovluqlar
  • Daimi ifadələr
  • Çox sətirli mətni tapın və dəyişdirin
  • Toplu fayla qoymaq üçün əmr sətri mətni yaratmaq üçün əmr sətri düyməsini yaradın
  • Komanda xətti kömək edir
  • Mühərrikin tap / dəyişdirin vahid testləri

Komanda xətti seçimlərinə baxılır

Görünür, FINDSTR ilə regex istifadə edə bilərsiniz

findstr mətn axtarmağa imkan verir (fayl adında naxış ilə göstərildiyi kimi. Fayl adında joker işarələr (* və ya?) varsa, uyğun gələn bütün sənədlərdə axtarış aparır. Seçim / S cari qovluqda da axtarır alt kataloglarında. Nümunə boşluqlar içərsə, belə / C: & axtarış ediləcək dördüncü mətn & quot kimi göstərilməlidir. Nümunəni normal ifadələrə çevirmək üçün / R seçimi istifadə olunmalıdır. / I seçimi hərfə həssasdır.

FindStr Köməkindən (Findstr /?):

/ R - Axtarış simlərindən adi ifadələr kimi istifadə olunur.

Ziyafətə bir az gecikmişəm, amma JREPL.BAT, XP-dən başlayaraq hər hansı bir Windows maşınında yerli olaraq işləyən hibrid bir JScript / toplu skript əsaslı regex yardım proqramıdır.

Tam sənədlər JREPL / vasitəsilə əldə edilə bilən skriptə daxil edilmişdir? və ya JREPL / ?? istifadə edin səhifələnmiş çıxış üçün.

JREPL, JScript ilə birlikdə gələn standart ECMA regex istifadə edir. ECMA regex, powerhell üçün mövcud olan .NET regex qədər güclü deyil, lakin yenə də olduqca yaxşıdır. Və düşünürəm ki, adi bir istifadəçi bu yardım proqramını powerhell-dən daha asan istifadə edəcəkdir.

Yerləşdirilmiş JREPL variantları onsuz da çox sayda güc təmin edir, lakin istifadəçi tərəfindən verilən JScript-i vurmaq qabiliyyəti həqiqətən heyrətamiz imkanlar açır.

İş yerim standart olmayan exe sənədlərinin yüklənməsinə icazə vermədiyi üçün toplu və ya JScript skriptlərinin yazılmasına məhdudiyyət qoyulmadığı üçün senarini hazırladım :-)