Sì, ci sono molti modi per farlo. Puoi usare awk, perlo anche bashper fare queste attività. In generale, tuttavia, sedè probabilmente lo strumento più indicato per svolgere questo tipo di attività.
Esempi
Supponiamo di avere questi dati di esempio, in un file data.txt:
foo bar 12,300.50
foo bar 2,300.50
abc xyz 1,22,300.50
awk
$ awk '{gsub("foo", "foofoofoo", $0); print}' data.txt
foofoofoo bar 12,300.50
foofoofoo bar 2,300.50
abc xyz 1,22,300.50
Perl
$ perl -pe "s/foo/foofoofoo/g" data.txt
foofoofoo bar 12,300.50
foofoofoo bar 2,300.50
abc xyz 1,22,300.50
Modifica in linea
Gli esempi sopra possono anche modificare direttamente i file. L'esempio Perl è banale. Aggiungi semplicemente l' -iinterruttore.
$ perl -pie "s/foo/foofoofoo/g" data.txt
Perché awkè un po 'meno diretto ma altrettanto efficace:
$ { rm data.txt && awk '{gsub("foo", "foofoofoo", $0); print}' > data.txt; } < data.txt
Questo metodo crea una sotto-shell con le parentesi graffe '{...} `in cui il file viene reindirizzato al suo interno tramite questo:
$ { ... } < data.txt
Una volta che il file è stato reindirizzato nella sotto-shell, viene eliminato e quindi awkeseguito sul contenuto del file letto nella sotto-shell STDIN. Questo contenuto viene quindi elaborato awke riscritto con lo stesso nome file che abbiamo appena eliminato, sostituendolo efficacemente.
$var=~s/a/b/g,gsub(/a/,"b",var),var.gsub(/a/,'b'),var.replace(/a/g,'b'),preg_replace("/a/","b",$var),regsub -all a b $var. Inoltre, molti strumenti e lingue possono anche eseguire la sostituzione di stringhe di testo semplice. Quindi la tua domanda è in qualche modo ampia.