Chcę usunąć pierwszy wiersz z wielu plików tekstowych i zastąpić go innym wierszem. Czy można to zrobić za pomocą terminala?
Wiem, jak korzystać z vima, czy istnieje sposób na zautomatyzowanie go? Chcę uniknąć robienia tego ręcznie (jak w przypadku edycji każdego pliku osobno).
Jeśli to możliwe, chciałbym uniknąć instalowania nowych bibliotek (szczególnie dla czegoś takiego, co uważam za bardzo proste - ale mogę się mylić).
Z góry dziękuję!
command-line
text-processing
TomTsagk
źródło
źródło
sed
jest właśnie tym, czego szukałem!Cóż, używając
vim
siebie:Co to robi:
setline (n, text)
, cóż, jest funkcją, która ustawia linięn
natext
.call
jest potrzebny do wywoływania funkcji.bufdo
służy do powtarzania polecenia między buforami (bez zakresu działa na wszystkie bufory).wq
zapisuje i zamyka bufor. Musimy to zrobić przed przejściem do następnego bufora, więc to polecenie jest powiązane zcall
poleceniem za pomocą|
.-c cmd
Runcmd
to polecenie trybu poleceń po załadowaniu pierwszego bufora.Nes
włącza tryb niekompatybilny, cichy, ex, co jest lepsze w przypadku przetwarzania nieinteraktywnegoKorzyści:
setline
tekstowa może być dowolna -&
wsed
tekście zastępczym może mieć niezamierzone efekty.źródło
sed
wydaje się znacznie łatwiejszy w użyciu, ale to naprawdę niesamowite, żevim
można zrobić to samo! Wielkie dzięki za odpowiedź!bufdo
). Rozważ, że masz już otwarte pliki i ... I pokaż alternatywną opcję1s/foo/bar/
.Kilka innych opcji:
awk
(potrzebuje stosunkowo nowej wersji GNUawk
)Perl / shell
Shell / coreutils
źródło
Ten skrypt wykona polecenie, umieszczając zmienione pliki w nowym katalogu bez faktycznej zmiany oryginałów.
źródło
Za pomocą
gawk
Przykład
źródło
jEdit: używam go do masowego wyszukiwania i zamiany. Jest potężny z możliwością używania RegEx - wyrażeń regularnych. Możesz operować na plikach w katalogu, określać rozszerzenia plików, np. „.Html” i tak dalej. I możesz zobaczyć lokalizację zmiany kandydata w kontekście, w GUI. jEdit jest świetny.
jEdit jest dostępny za pośrednictwem centrum oprogramowania Ubuntu.
źródło
Polecenia ogon i kot zrobiłyby to łatwo:
Zawiń je w odpowiednią pętlę i być może użyj odpowiedniego i prawego pliku tymczasowego zamiast na stałe zakodowanej nazwy pliku tymczasowego. Wierzę, że bash i inne powłoki mają składnię do tworzenia plików tymczasowych.
Opcja -n tail ma dwie interpretacje w zależności od tego, czy argument ma znak plus. Jeśli ma znak plus, oznacza to pokazanie końca pliku zaczynającego się od podanego numeru linii. W przeciwnym razie liczba to liczba wierszy, w tym ostatni wiersz, który ma wyprowadzić ogon.
źródło