GNU/Linux >> Belajar Linux >  >> Linux

Cara menggunakan sed untuk menghapus n baris terakhir dari sebuah file

sed yang lucu &sederhana dan tac solusi :

n=4
tac file.txt | sed "1,$n{d}" | tac

CATATAN

  • kutip ganda " diperlukan untuk shell untuk mengevaluasi $n variabel di sed memerintah. Dalam tanda kutip tunggal, interpolasi tidak akan dilakukan.
  • tac adalah cat terbalik, lihat man 1 tac
  • {} di sed apakah ada untuk memisahkan $n &d (jika tidak, shell mencoba menginterpolasi $nd yang tidak ada variabel)

Dari sed one-liners:

# delete the last 10 lines of a file
sed -e :a -e '$d;N;2,10ba' -e 'P;D'   # method 1
sed -n -e :a -e '1,10!{P;N;D;};N;ba'  # method 2

Tampaknya itulah yang Anda cari.


Saya tidak tahu tentang sed , tetapi dapat dilakukan dengan head :

head -n -2 myfile.txt

Jika hardcoding n adalah opsi, Anda dapat menggunakan panggilan berurutan ke sed. Misalnya, untuk menghapus tiga baris terakhir, hapus tiga baris terakhir tiga kali:

sed '$d' file | sed '$d' | sed '$d'

Linux
  1. Bagaimana cara menggunakan baris file sebagai argumen perintah?

  2. Bagaimana cara menghapus garis yang muncul pada file B dari file A lainnya?

  3. Bagaimana cara menggunakan sed untuk menghapus hanya dua baris kosong?

  1. Cara menggunakan perintah sed Linux

  2. Bagaimana Cara Menghapus Bom Dari File Utf-8?

  3. Bagaimana Cara Menghapus N Baris Pertama Dari File Ascii Menggunakan Perintah Shell?

  1. Cara Menggunakan Perintah Tar di Linux

  2. Cara menggunakan Pengelola Berkas LCN

  3. Bagaimana cara menyisipkan teks di awal file?