/ / Mac OS X usuwa linię z wielu plików - macos, grep

Mac OS X usuwa linię z wielu plików - macos, grep

Próbuję usunąć linię z kilkuset plików. Poniższe robi dokładnie to, czego potrzebuję, ale nie zapisuje zmian (zgodnie z oczekiwaniami).

$ grep -v meow src/files

Widziałem to dołączanie > na końcu danej komendy określi, gdzie powinien być zapisany bufor wyjściowy, ale czy działa to dla wielu plików?

Chciałbym wiedzieć, czy istnieje elegancki sposób masowej edycji za pośrednictwem terminala. Wszystkie przykłady, z którymi się zetknąłem awk lub sed zapewniają tylko rozwiązania do edycji jednego pliku na raz.

Odpowiedzi:

2 dla odpowiedzi № 1

Jednym ze sposobów, aby to zrobić, jest skorzystanie z poniższego linku Perla:

perl -i.bak -n -e "print unless /meow/" src/files

Powinno to wykonać edycję wielu plików w miejscu. Oryginały są zapisywane w .bak akta.


1 dla odpowiedzi nr 2

Innym sposobem na zrobienie tego jest wykonanie podobnej operacji z sed:

sed -i .bak "/meow/d" src/files/*

Perl ma swoje -i opcja z sed, mimo wszystko. Zauważ, że aby nie używać pliku kopii zapasowej, potrzebujesz jawnie pustego rozszerzenia z przynajmniej niektórymi wersjami sed:

sed -i "" "/meow/d" src/files/*