telefono - www.search.ch telefonbuch




Ricerca multi linea e strumento di sostituzione (9)

Il miglior strumento che ho trovato è un pezzo di software gratuito chiamato BK ReplaceEm . L'interfaccia richiede un po 'di tempo per abituarsi, ma vale la pena imparare a usarlo. Lo strumento è molto potente e ti consente di eseguire sostituzioni su più righe con o senza espressioni regolari.

Sto cercando uno strumento per sostituire più linee attraverso un progetto. Per esempio:

#include "../DiscreteIO/Discrete.h"
#include "../PCI/pci.h"
#include "../Arinc429/ARINC429.h"

con

#include "../PCI/pci.h"
#include "../DiscreteIO/DiscreteHW.h"
#include "../DiscreteIO/Discrete.h"

Ho provato due strumenti che funzionano per questo tipo di ricerca e sostituzione. Ricerca e sostituzione di Wildedit e Actual Entrambi sembrano essere strumenti eccellenti ma sono shareware. Qualcuno sa di strumenti simili? Qualcosa di gratuito o è tempo di separarsi con un po 'di soldi?

Una precisazione:

attraverso un progetto in questo caso significa un migliaio di file c. Gli editor di testo possono eseguire questo solo un file alla volta (blocco note, blocco note dei programmatori) o in tutti i file aperti (nodepad ++). Non ho provato nessuno degli altri editor, ma presumo che abbiano problemi simili. Perfavore, correggimi se sbaglio.

Strumenti come sed & awk sono una soluzione ma presentano problemi poiché non li uso regolarmente e ho bisogno di passare un po 'di tempo a trovare qualcosa su cui lavorare perché non sono un esperto degli strumenti.

La risposta è: tutto ...

Ultra edit può funzionare ma ho già un editor e il prezzo è elevato se lo utilizzerò solo come strumento di ricerca e sostituzione.

Sed, AWK e strumenti basati su espressioni regolari possono funzionare, ma in alcuni casi può essere un problema.

Wild Edit può funzionare e non è così costoso.

La mia decisione alla fine è di lavorare con le mie abilità di espressione regolare.


#see docs at the bottom 
use strict;
use warnings;
use Cwd;

use File::Find;

my $search_patternFilePath=$ARGV[0] ;
my $replace_patternFilePath =$ARGV[1];
my $file_pattern = $ARGV[2];

# Usage

(@ARGV == 3 ) || die ("Usage: FindAndReplace.pl pathToFileContaingTheMultiLineSearchText FullPathToFileContainingMultiLineReplaceText FilePattern . Example: perl MultiLineFindAndReplace.pl \"D:\Opera\New Folder\search.txt\" \"D:\Opera\replace.txt\" bak");



find(\&d, cwd);

sub d {
my $file = $File::Find::name;
$file =~ s,/,\\,g;

return unless -f $file;
return unless $file =~ /$file_pattern/;

my $searchPatternString = &slurpFile ( $search_patternFilePath ) ; 
my $replacePatternString = &slurpFile ( $replace_patternFilePath ) ; 
my $fileStr = &slurpFile ( $file ) ; 

$fileStr =~ s/$searchPatternString/$replacePatternString/igo ; 
open(FILEHANDLE,">$file") || die "cannot open output file";
print (FILEHANDLE "$fileStr");
close FILEHANDLE ;

}

sub slurpFile 
{
my $file = shift ;
print "\$file is $file" ;
local( $/, *FILE ) ; 
open (FILE , $file) or 
die "Cannot find $file !!! " ; 
my $fileString = <FILE>; #slurp the whole file into one string !!! 
close FILE ;
return $fileString ;
}
#Purpose : performs recursive find and replace based on pеrl regexes from the current directory
#the search and replace is case insensitive
#Usage
#perl MultiLineFindAndReplace.pl "D:\Opera\New Folder\search.txt" "D:\Opera\replace.txt" bak

Sono abbastanza sicuro che una combinazione di sed, awk e / o grep farebbe il lavoro. Sono gratuiti e forniti con qualsiasi distribuzione Linux ma esistono anche versioni di Windows.


Sono sempre perplessa quando le persone chiedono strumenti senza dire per quale piattaforma (o) hanno bisogno di loro ... In questi casi, suppongo che sia, di default, per Windows ...

Sono disponibili numerosi strumenti di ricerca / sostituzione per Windows, più o meno potenti, molti dei quali gratuiti.
Attualmente, utilizzo il modulo Cerca / Sostituisci di FileMenu Tools , sorprendentemente potente (è possibile utilizzare espressioni regolari), che viene fornito con molte altre prelibatezze.
Ho anche Simple Search-Replace di RJL Soft (no RE), grepWin dell'autore di TortoiseSVN, che supporta le regex e un buon numero di opzioni, e ce ne sono altre che ho usato in passato.

PS .: ho dimenticato. La ricerca semplice-Sostituisci non sostituirà più righe. Né FileMenu Tools, a quanto pare. grepWin può fare (usando \ r \ n per esempio). Ricordo quegli strumenti gratuiti con campi di ricerca / sostituzione su più righe, ma non ho i loro nomi a portata di mano.



Per una piattaforma Windows, posso seguire il suggerimento UltraEdit-32 di cui sopra: è uno strumento meraviglioso e vale i soldi. A parte questo, penso che la tua migliore scommessa sia o un piccolo script perl, o awk / sed, ancora come menzionato sopra.




L'unica cosa che funziona in un solo colpo è Dreamweaver ....







search