/ / Odstráňte text, ktorý je uložený v súbore, z viacerých súborov v linuxovom termináli - linux, terminál, spracovanie textu

Odstrániť text, ktorý je uložený v súbore, z viacerých súborov v linuxovom termináli - linux, terminál, textové spracovanie

Chcel by som odstrániť nejaký text, ktorý som uložildo súboru (pretože je pomerne dlhý), o ktorom viem, že je súčasťou mnohých súborov v adresári (a jeho podadresároch). Teraz chcem odstrániť tento vzorový text zo všetkých týchto súborov.

Čítal som toto jeden, ale nepoužíva a vstupný súbor - tento malý vyladenie nemôžem zvládnuť :)

Vopred ďakujem.

Info: Používam Ubuntu 13.10 i386

odpovede:

1 pre odpoveď č. 1

Nech je bežný text v súbore s názvom „common.txt“

find . -type f -not -name common.txt -print0 |
xargs -0  perl -i.orig -0777 -pe "
BEGIN {open my $fh, "<", "common.txt"; $common = <$fh>; close $fh}
while (($i=index($_, $common)) != -1) {
substr($_, $i, length($common)) = ""
}
"

Tento program perl číta každý súbor ako jeden reťazec, potom na odstránenie bežných častí použije porovnávanie jednoduchých reťazcov.