Rozumiem, że sed
to polecenie do manipulowania plikiem tekstowym.
Z mojego Googlinga wydaje się, że -i
oznacza to wykonanie operacji na samym pliku, czy to prawda?
Co '1d'
?
Rozumiem, że sed
to polecenie do manipulowania plikiem tekstowym.
Z mojego Googlinga wydaje się, że -i
oznacza to wykonanie operacji na samym pliku, czy to prawda?
Co '1d'
?
Odpowiedzi:
W sed
:
-i
opcja edytuje plik wejściowy w miejscu
'1d'
usunie pierwszy wiersz pliku wejściowego
Przykład:
% cat file.txt
foo
bar
% sed -i '1d' file.txt
% cat file.txt
bar
Pamiętaj, że przez większość czasu dobrym pomysłem jest zrobienie kopii zapasowej podczas korzystania z tej -i
opcji, aby mieć kopię zapasową oryginalnego pliku na wypadek nieoczekiwanej zmiany.
Na przykład, jeśli wykonasz:
sed -i.orig '1d' file.txt
oryginalny plik zostanie zachowany jako file.txt.orig
plik zmodyfikowany file.txt
.
sed '1d' file.txt
Drukuje zawartość file.txt
; z wyłączeniem pierwszej linii; na standardowe wyjście.
sed -i '1d' file.txt # GNU, NetBSD, OpenBSD
sed -i '' '1d' file.txt # FreeBSD, macOS
Drukuje zawartość file.txt
; z wyłączeniem pierwszej linii; z powrotem w file.txt
; nadpisywanie oryginału.
sed -i.back '1d' file.txt
Tworzy kopię zapasową oryginału (as file.txt.back
) przed dokonaniem zmian. Z wyjątkiem FreeBSD sed
sufiks (tutaj .back
) musi być dołączony do -i
opcji (w tym samym argumencie, bez spacji między -i
i .back
).
sed '2d' file.txt
Drukuje zawartość file.txt
; z wyłączeniem drugiej linii; na standardowe wyjście.
(Podanie dowolnej liczby spowoduje usunięcie odpowiedniej linii).
Kompatybilny również z -i
flagą.
sed '1!d' file.txt
Drukuje zawartość file.txt
; z wyłączeniem wszystkich oprócz pierwszej linii; na standardowe wyjście.
(Innymi słowy; drukowany jest tylko pierwszy wiersz).
Kompatybilny również z -i
flagą.
sed '$d' file.txt
Drukuje zawartość file.txt
; z wyłączeniem ostatniej linii; na standardowe wyjście.
Kompatybilny również z -i
flagą.
W sed -h
mają:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
i „wykonaj operację na samym pliku”. absolutnie to.
I man
powiedział: „Sed jest edytorem strumieniowym. Do wykonywania podstawowych przekształceń tekstu w strumieniu wejściowym (pliku lub danych wejściowych z potoku) służy edytor strumieni. ”
jako twoje pytanie
sed -i '1d' file_name
oznacza: usuń pierwszy wiersz w pliku "file_name"
na miejscu i wykonaj kopię zapasową do pliku. (podobnie jak edytowanie pliku i usuwanie pierwszego wiersza bezpośrednio).
-i
sprawdzenia, co się stanie, a następnie użyć-i
do zmiany pliku.