Jak mogę usunąć sekcje plików HTML w partii ponad 700 plików?


1

Po pierwsze:
Używam najnowszej wersji OSX i mogę edytować pliki HTML za pomocą CotEditor i KompoZer. Jestem jednak niedoświadczony w ogóle z edytorami HTML: /
Jeśli muszę - ponieważ jedna z twoich odpowiedzi jest super prosta i wygodna w ten sposób - mógłbym przełączyć się na maszynę Win7 do tego zadania.

Problem:
Mam tu nieco ponad 700 plików HTML, które mają tę samą podstawową strukturę, są zorganizowane w wiele tabel i muszę usunąć niektóre treści ze wszystkich, które składają się zawsze z tych samych wierszy z tytułami i poniżej kolumn ze zmianą zawartość. - Gdybym mógł określić coś w stylu „usuń całą kolumnę, która zawiera np.„ Nazwę ”w górnej komórce”, to by się udało. Ponadto muszę usunąć powtarzające się części (które teoretycznie można znaleźć i zastąpić dla wszystkich plików ... ale, cóż, w jakiś sposób w partii)

Czy możesz mi pomóc? Czy KompoZer wykona sztuczkę wsadową lub czy masz inne zalecenie? Dzięki :)

-----EDYTOWAĆ-----
Spróbowałem TextWranglera, aby znaleźć go w partii i zastępuje możliwości i działa bardzo dobrze ze znalezieniem powtarzającego się kodu w wielu plikach, więc wiem, jak uzyskać dokładnie te same bity z każdego pliku. To pozostawia mi zmienioną treść.

Czy istnieje sposób na znalezienie treści między dwoma cyklicznymi punktami? Na przykład, jeśli wiedziałem coś przed i po tym, jak treść, którą chcę usunąć, jest zawsze taka sama:

<tag> txt_a Content1_to_delete txt_b </tag>
<tag> txt_a Content2_to_delete txt_b </tag>
<tag> txt_a Content3_to_delete txt_b </tag>

więc potrzebowałbym Znajdź i; zastąpić między <tag> txt_a i txt_b </tag> lub nawet znajdź i amp; wymienić zaczynając od <tag> txt_a do i włącznie txt_b </tag>

to jest dla mnie kłopotliwe, gdy naprawdę potrzebuję pomocy
----- EDIT2 -----
Po odpowiedzi Gombai Sándora w połączeniu z komentarzem Dooley_labs dostałem kilka pomysłów i chociaż wariant sed będzie działał z terminala, wybrałem TextWrangler do wykonania pracy.
TextWrangler może to zrobić Znajdź i amp; Zastąp w wielu plikach, ale akceptuje również wyrażenia regularne za pomocą opcji „grep”. Nauczyłem się o wyrażeniach regularnych i byłem w stanie rozwiązać mój problem. „Magiczny” kawałek dla mnie był taki, że poprawiałem symbole wieloznaczne. Szczególnie prosty .*. Każdemu, kto chciałby zamieszać z wyrażeniami regularnymi, polecam tę stronę, która okazała się bardzo przydatna: regexr.com


Może w tym przypadku może pomóc regex? Nigdy nie widziałem edytora tekstu, który mógłby to zrobić, ale nie zajrzałem do tego. Jeśli możesz go znaleźć, jestem zainteresowany.
Dooley_labs

@Dooley_labs Znalazłem TextWrangler (lub jego ulepszoną funkcję, płatną wersję BBEdit) robi Find & amp; Zastąp nie tylko wiele plików, ale ma opcję grep, aby wprowadzić wyrażenia regularne do znalezienia :)
QuentinS

Właśnie to odkryłem wczoraj, ale dzięki! xD
Dooley_labs

Odpowiedzi:


0

Najczęstsze ogólne IDE mają funkcję (regexp) wyszukiwania i zastępowania w plikach (w strukturze katalogów). Nawet drobni redaktorzy oferują tę funkcję; w systemie Windows dobrym przykładem jest NotePad ++.

W przypadku OSX, gdzie masz zwykłe narzędzia powłoki, może to być typowe zadanie dla sed, który jest edytorem ... bardzo specjalnym edytorem.

Pod warunkiem, że wszystkie pliki znajdują się w tym samym katalogu, który znajduje się w tym katalogu, możesz użyć tego do usunięcia niepotrzebnych części i umieścić dane wyjściowe w plikach kończących się na .htm, które (po pewnym sprawdzeniu) możesz zmienić na .html.

$ cat just-an-html.html
<tag> txt_a Content1_to_delete txt_b </tag>
<tag> txt_a Content2_to_delete txt_b </tag>
<tag> txt_a Content3_to_delete txt_b </tag>
$ for HTML in *.html; do sed -e 's@\(tag> txt_a\) .*\(txt_b </tag\)@\1 \2@g' $HTML > $(basename $HTML html)htm ; done
$ ls *.htm
just-an-html.htm
$ cat just-an-html.htm
<tag> txt_a txt_b </tag>
<tag> txt_a txt_b </tag>
<tag> txt_a txt_b </tag>

Możliwe jest również usunięcie podciągów bezpośrednio w plikach (-i: inplace), ale nie polecam tego, chyba że masz aktualne kopie zapasowe.

$ cat just-an-html.html
<tag> txt_a Content1_to_delete txt_b </tag>
<tag> txt_a Content2_to_delete txt_b </tag>
<tag> txt_a Content3_to_delete txt_b </tag>
$ for HTML in *.html; do sed -i -e 's@\(tag> txt_a\) .*\(txt_b </tag\)@\1 \2@g' $HTML  ; done
$ cat just-an-html.html
<tag> txt_a txt_b </tag>
<tag> txt_a txt_b </tag>
<tag> txt_a txt_b </tag>

Czy rozumiem cię poprawnie, zasadniczo sugerujesz, aby wziąć wszystko przed i po treści, aby usunąć, a następnie połączyć w jeden nowy plik .htm?
QuentinS

Tak, bezpieczny tworzy jeden plik .htm dla każdego pliku .html o prawie tej samej treści, ale usunięty wzór.
Gombai Sándor

pamiętaj, nie możesz analizować [X] HTML za pomocą wyrażenia regularnego: stackoverflow.com/questions/1732348/…
aaaaaa
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.