Sed -i '1d' ne yapar?


28

Bunun sedmetin dosyasını işlemek için bir komut olduğunu biliyorum .

Googling'imden, -idosya üzerinde işlem yapmak anlamına geldiği anlaşılıyor , doğru mu?

Ne hakkında '1d'?

Yanıtlar:


43

İçinde sed:

  • -i seçenek giriş dosyasını yerinde düzenler

  • '1d' giriş dosyasının ilk satırını kaldıracak

Örnek:

% cat file.txt 
foo
bar

% sed -i '1d' file.txt 

% cat file.txt        
bar

Unutmayın ki, çoğu zaman -ibeklenmedik bir değişiklik olması durumunda orijinal dosyayı yedeklemeniz için bu seçeneği kullanırken yedekleme yapmak iyi bir fikirdir .

Örneğin, yaparsanız:

sed -i.orig '1d' file.txt 

orijinal dosya olarak tutulacak file.txt.origve değiştirilmiş dosya olacaktır file.txt.


4
-iİlk önce ne olacağını görmek için olmadan da "kuru çalışma" yapabilirsiniz , sonra -idosyayı gerçekten değiştirmek için kullanın .
Baard Kopperud,

15

1 A)

sed '1d' file.txt

İçeriğini yazdırır file.txt; ilk satır hariç; standart çıktıya.


2. a)

sed -i    '1d' file.txt # GNU, NetBSD, OpenBSD
sed -i '' '1d' file.txt # FreeBSD, macOS

İçeriğini yazdırır file.txt; ilk satır hariç; geri file.txt; orijinalin üzerine.


2. b)

sed -i.back '1d' file.txt

file.txt.backDeğişiklik yapmadan önce orijinalin (as ) bir yedeğini oluşturur . FreeBSD dışında sed, (burada .back) eki -iseçeneğe eklenmelidir (aynı argümanda, -ive arasında boşluk yoktur .back).


3 A)

sed '2d' file.txt

İçeriğini yazdırır file.txt; ikinci satır hariç; standart çıktıya.
(Herhangi bir numarayı belirlemek ilgili satırı kaldıracak).

-iBayrakla da uyumlu .


3. b)

sed '1!d' file.txt

İçeriğini yazdırır file.txt; Tüm hariç fakat ilk satırında; standart çıktıya.
(Başka bir deyişle; yalnızca ilk satır yazdırılır).

-iBayrakla da uyumlu .


3. c)

sed '$d' file.txt

İçeriğini yazdırır file.txt; son satır hariç; standart çıktıya.

-iBayrakla da uyumlu .


FYI: BSD sürümü (yani, macOS de facto standard) tipik olarak bir yedekleme ( 2.b) oluşturmadığınız veya yedekleme bypass yöntemini (2. c) kullanmadığınız sürece işbirliği yapmayacaktır . GNU versiyonu bunun için size sormaz. Tahribatsız bir şekilde düzenleme yapacak ve mevcut dosyaları tereddüt etmeden üzerine yazacaktır.
sesler

4

Var sed -h:

  -i[SUFFIX], --in-place[=SUFFIX]
             edit files in place (makes backup if SUFFIX supplied)

ve 'işlemi dosyanın kendisinde yap.' mutlak.

Ve mandedi ki: 'Sed bir dere editörüdür. Bir akış editörü, bir giriş akışında (bir boru hattından bir dosya veya giriş) temel metin dönüşümlerini gerçekleştirmek için kullanılır. '

Sorunuz olarak

sed -i '1d' file_name

anlamına gelir: yerdeki dosyadaki ilk satırı silin ve dosyaya "file_name"yedekleyin. (tıpkı dosyayı düzenlemek ve doğrudan ilk satırı silmek gibi.)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.