Tak, istnieje wiele sposobów na zrobienie tego. Możesz również użyć awk, perllub, bashaby wykonać te czynności. Zasadniczo sedjest to jednak prawdopodobnie najbardziej odpowiednie narzędzie do wykonywania tego typu zadań.
Przykłady
Powiedzmy, że mam te przykładowe dane w pliku 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
Edycja bezpośrednia
Powyższe przykłady mogą również bezpośrednio modyfikować pliki. Przykład Perla jest trywialny. Po prostu dodaj -iprzełącznik.
$ perl -pie "s/foo/foofoofoo/g" data.txt
Dla awkniego jest trochę mniej bezpośredni, ale równie skuteczne:
$ { rm data.txt && awk '{gsub("foo", "foofoofoo", $0); print}' > data.txt; } < data.txt
Ta metoda tworzy podpowłokę z nawiasami klamrowymi {...}, w których plik jest przekierowywany do niego przez to:
$ { ... } < data.txt
Po przekierowaniu pliku do podpowłoki jest on usuwany, a następnie awkuruchamiany względem zawartości pliku, który został odczytany do podpowłoki STDIN. Ta treść jest następnie przetwarzana awki zapisywana z powrotem do tej samej nazwy pliku, którą właśnie usunęliśmy, skutecznie ją zastępując.
$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. Poza tym wiele narzędzi i języków może również zastępować ciągi tekstowe. Więc twoje pytanie jest jakoś szerokie.