Menghilangkan baris pertama dari output perintah Linux

167

Saya memiliki persyaratan di mana saya ingin menghilangkan baris 1 dari output ls -latr "some path"Karena saya harus menghapus total 136dari output di bawah ini

masukkan deskripsi gambar di sini

Jadi saya menulis ls -latr /home/kjatin1/DT_901_linux//autoInclude/system | tail -qyang mengecualikan baris 1, tetapi ketika folder kosong itu tidak menghilangkannya. Tolong beritahu saya cara menghilangkan baris 1 dalam output perintah linux

AabinGunz
sumber

Jawaban:

184

Pipa itu ke awk:

awk '{if(NR>1)print}'

atau sed

sed -n '1!p'
Fredrik Pihl
sumber
21
atauawk 'NR>1'
mitchus
24
jugased '1d'
JoL
261

The tailProgram dapat melakukan ini:

ls -lart | tail -n +2

The -n +2berarti “mulai melewati pada baris kedua output”.

Donal Fellows
sumber
1
Perhatikan bahwa beberapa tailimplementasi memerlukan -nflag untuk itu, seperti padatail -n +2
Mat
Anda juga bisa menggunakan find . -name . -o -ls -prune, tetapi itu menghasilkan keluaran yang agak berbeda.
Donal Fellows
@ Mat: Jadi sepertinya, meskipun berhasil tanpa ketika saya mencoba (pada OSX).
Donal Fellows
dulu bekerja dengan coreutilsekor, tetapi sudah usang, lalu dihapus. Anda sekarang mendapatkan tail: cannot open '+2' for reading: No such file or directory(coreutils 8.7). Sedihnya adalah implementasi lainnya tidak menerima -n...
Mat
4
@Mat: Ada yang butuh, ada yang tidak mau? Ugh! Ugh ugh ugh ugh! Itu menjijikkan.
Donal Fellows
23
ls -lart | tail -n +2 #argument means starting with line 2
Jeff Ferland
sumber
20

Ini adalah cara Hacky cepat: ls -lart | grep -v ^total.

Pada dasarnya, hapus semua baris yang dimulai dengan "total", yang dalam lsoutput seharusnya hanya baris pertama.

Cara yang lebih umum (untuk apa saja):

ls -lart | sed "1 d"

sed "1 d" berarti hanya mencetak semuanya kecuali baris pertama.

wkl
sumber
3
Menggunakan grepfilter untuk tugas ini berbahaya secara umum; itu bisa cocok dengan hal-hal yang tidak terduga.
Donal Fellows
Terkadang ya, dan saya pikir itu bukan solusi terbaik ... tetapi perintah ls selalu memimpin entri dengan izin direktori. Ini tidak ideal karena grep terus memeriksa setiap baris, dan ia berperilaku berbeda dengan bendera lain.
Jeff Ferland
1
ini hanya semantik, tetapi secara teknis itu berarti menghapus baris pertama dari aliran.
John Morales
lebih baik harap Anda tidak memiliki file saya dengan total namanya yang ingin Anda ketahui
Amias