Bagaimana saya bisa mendapatkan / memfilter entri riwayat dalam rentang tertentu?
Saya memiliki file riwayat yang besar dan sering digunakan
history | grep somecommand
Sekarang, ingatan saya sangat buruk dan saya juga ingin melihat apa lagi yang saya lakukan sekitar waktu saya memasukkan perintah.
Untuk saat ini saya melakukan ini: dapatkan kecocokan, katakanlah 4992 somecommand
, maka saya lakukan
history | grep 49[0-9][0-9]
ini biasanya cukup baik, tetapi saya lebih suka melakukannya lebih tepatnya, yaitu melihat perintah dari 4972 hingga 5012, yaitu 20 perintah sebelum dan 20 sesudahnya.
Saya bertanya-tanya apakah ada cara yang lebih mudah? Saya menduga, skrip khusus sudah beres, tetapi mungkin orang lain telah melakukan hal serupa sebelumnya.
Jawaban:
Anda dapat meminta
grep
untuk mencetak beberapa baris di sekitar pertandingan, misalnya 3 sebelum dan 5 setelah:grep -C 4
setara dengangrep -A 4 -B 4
.Tetapi seringkali Anda tidak akan tahu persis berapa banyak garis yang Anda inginkan sebelumnya. Jadi, gunakan lebih sedikit dan cari di dalamnya. Anda bahkan dapat meluncurkan pencarian dari baris perintah:
sumber
less
! Tidak tahu Anda bisa melakukan ituCoba fc:
... itu adalah perintah bash builtin. (jadi jangan mencobanya di tcsh:>)
sumber
mencoba
history | grep -C20 '^4992'
sumber