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ď č. 1Nech 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.