Bagaimana saya bisa menghapus baris pertama file dan menyimpan perubahan?
Saya mencoba ini tetapi menghapus seluruh isi file.
$sed 1d file.txt > file.txt
shell-script
sed
ksh
kickass13
sumber
sumber
sed
, Anda dapat menggunakansed -i .bak '1d' file.txt
.ed
.ed
perintah akan menjadi:printf "%s\n" 1d w q | ed file.txt
(I ed jantung)-exec sed -i '1d' {} \;
Pilihan alternatif yang sangat ringan hanya untuk 'mengekor' segalanya kecuali baris pertama (ini bisa menjadi cara mudah untuk menghapus header file secara umum):
Mengikuti @Evan Teitelman, Anda dapat:
Untuk menghindari file sementara. Pilihan lain mungkin:
Dan seterusnya. Pengujian yang terakhir:
Ups, kami kehilangan baris baru (per @ 1_CR komentar di bawah), cobalah:
Kembali ke sed, coba:
atau mungkin
Untuk menghindari efek samping.
sumber
tail
trick bekerja untuk saya (waktu kurang dari 3 detik pada file 130MB). Terima kasih!echo "$(tail -n +2 file.txt)" > file.txt
adalah jawaban sempurna.Lihat juga
sponge
darimoreutils
.sponge
rendam data dari input standar hingga akhir penulisan input standar ditutup sebelum menulis ke file. Digunakan seperti ini:sumber
Topik ini menarik, jadi saya menguji tolok ukur dalam 3 cara:
sed '1d' d.txt > tmp.txt
tail -n +2 d.txt > tmp.txt
sed -i '1d' d.txt
Perhatikan bahwa targetnya
d.txt
adalah file 5.4GBDapatkan hasilnya:
Kesimpulan: Tampaknya di bawah ini cara tercepat:
sed '1d' file.txt > tmpfile; mv tmpfile file.txt
sumber
sed '1d' d.txt
Metode Anda tidak termasuk (atau sepertinya itu dengan membaca tes Anda)mv
perintah. Dalam pengujian saya di FreeBSD dengan file 20MBsed -i
itu adalah yang tercepat.ex
dapat digunakan untuk pengeditan di tempatyang benar yang tidak melibatkan file tempsumber
strace -e open ex -c ':1d' -c ':wq' foo
. ex memotong file asli dengan file temp, di mana sebagai GNU sed's -i opsi menimpa yang asli dengan file temp. Saya tidak yakin bagaimana sed BSD bekerja.Cara terpendek dan termudah untuk menghapus baris pertama dari file yang digunakan
sed
adalah:sumber
Anda dapat menggunakan Vim dalam mode Ex:
1
temukan baris pertamad
menghapusx
Simpan dan tutupsumber
Perintah ini akan menghapus 1 baris dan menyimpan sebagai "file.txt".
sumber
Untuk menghapus baris praticiler dalam file
Sed '1d' file
Sed '1d3d' file
Hapus charecter sejalan
1 Hapus Dua piagam pertama dalam lin
File Sed /^..// '
2 Hapus dua baris chrectercin terakhir
File Sed / .. £ // '
3 Hapus baris kosong
Sed '/ ^ £ / d' file
sumber
£
≠$
.Bisa menggunakan vim untuk melakukan ini:
sumber
cat file01 | sed -e '1,3d'
// tampilkan konten dalam file01 tetapi hapus baris pertama dan ketiga
sumber