Jak mogę usunąć pierwszy wiersz pliku i zachować zmiany?
Próbowałem tego, ale usuwa całą zawartość pliku.
$sed 1d file.txt > file.txt
shell-script
sed
ksh
kickass13
źródło
źródło
sed
możesz korzystaćsed -i .bak '1d' file.txt
.ed
.ed
Komenda będzie:printf "%s\n" 1d w q | ed file.txt
(I serce ed)-exec sed -i '1d' {} \;
Alternatywną, bardzo lekką opcją jest po prostu „ogonowanie” wszystkiego oprócz pierwszej linii (może to być łatwy sposób na usunięcie nagłówków plików):
Śledząc @Evan Teitelman, możesz:
Aby uniknąć pliku tymczasowego. Inną opcją może być:
I tak dalej. Testowanie ostatniego:
Ups, zgubiliśmy nowy wiersz (na komentarz @ 1_CR poniżej), spróbuj zamiast tego:
Wracając do sed, spróbuj:
a może
Aby uniknąć skutków ubocznych.
źródło
tail
Sztuczka pracował dla mnie (trwało mniej niż 3 sekundy na pliku 130MB). Dzięki!echo "$(tail -n +2 file.txt)" > file.txt
jest idealną odpowiedzią.Również przyjrzeć się
sponge
zmoreutils
.sponge
przesiąka w danych ze standardowego wejścia, dopóki koniec zapisu standardowego wejścia nie zamknie się przed zapisaniem do pliku. Używa się go tak:źródło
Ten temat jest interesujący, więc testuję test porównawczy na 3 sposoby:
sed '1d' d.txt > tmp.txt
tail -n +2 d.txt > tmp.txt
sed -i '1d' d.txt
Pamiętaj, że celem
d.txt
jest plik o pojemności 5,4 GBUzyskaj wynik:
Wniosek: wydaje się, że poniżej jest najszybszy sposób:
sed '1d' file.txt > tmpfile; mv tmpfile file.txt
źródło
sed '1d' d.txt
metoda nie zawierała (a przynajmniej tak się wydaje, czytając testy)mv
polecenia. W moich testach na FreeBSD z plikiem 20 MBsed -i
był najszybszy.ex
może być używany do prawdziwej edycji w miejscu,która nie wymaga pliku tymczasowegoźródło
strace -e open ex -c ':1d' -c ':wq' foo
. ex obcina oryginalny plik plikiem tymczasowym, gdzie jako opcja -i w GNU sed zastępuje oryginał plikiem tymczasowym. Nie jestem pewien, jak działa sed BSD.Najkrótszym i najprostszym sposobem usunięcia pierwszego wiersza z pliku
sed
jest:źródło
Możesz używać Vima w trybie Ex:
1
znajdź pierwszą linięd
usunąćx
Zapisz i zamknijźródło
To polecenie usunie 1 linię i zapisze jako „plik.txt”.
źródło
Aby usunąć wiersz praticiler w pliku
Plik „1d” Sed
Plik „1d3d” Sed
Usuń charecter w linii
1 Usuń Pierwsze dwie karty w linii
Plik Sed /^..// 'Sed
2 Usuń dwie ostatnie linie chrectercin
Plik Sed / .. £ //
3 Usuń pusty wiersz
Plik Sed '/ ^ £ / d'
źródło
£
≠$
.Przydałby się do tego vim:
źródło
plik kota 01 | sed -e „1,3d”
// pokaż zawartość w pliku 01, ale usuń pierwszy i trzeci wiersz
źródło