Saya memiliki banyak file yang berisi informasi teks ascii di baris 5-10 pertama, diikuti oleh informasi matriks yang ditabulasi dengan baik. Dalam skrip shell, saya ingin menghapus beberapa baris teks ini sehingga saya dapat menggunakan informasi matriks murni dalam program lain. Bagaimana saya bisa menggunakan perintah bash shell untuk melakukan ini?
Jika ada bantuan, saya menggunakan RedHat dan sistem linux Ubuntu.
sed -i -e 1,3d yourfile
. Ini tidak akan menggemakan apa pun, itu hanya akan mengubah file di tempat. Jika Anda tidak perlu menyalurkan hasilnya ke perintah lain, ini lebih mudah.sed -i
khusus. Sebagian besar implementasi hanya menghapus file dan menggantinya dengan yang baru, yang tidak berfungsi untuk tautan karena Anda akhirnya meninggalkan yang asli di lokasi lainnya.sed -i '1,3d' file.txt
Ini menghapus 3 baris pertama dari file.txt.
sumber
Jika garis tabulasi adalah yang memiliki karakter tab:
(
␉
menjadi karakter tab literal) atau setaraDalam skrip bash / ksh / zsh, Anda dapat menulis
$'\t'
untuk sebuah tab, misalnyagrep $'\t'
ataused -n $'/\t/p'
.Jika Anda ingin menghilangkan 10 baris di awal file:
(perhatikan bahwa itu
+11
untuk menghilangkan 10 garis, karena+11
berarti "mulai dari garis 11" dan garis angka ekor dari 1) atauDi Linux, Anda dapat memanfaatkan
-i
opsi sed GNU untuk memodifikasi file yang ada:Atau Anda dapat menggunakan shell loop dan file sementara:
Atau jika Anda tidak ingin memodifikasi file di tempat, tetapi beri mereka nama yang berbeda:
sumber
Anda dapat menggunakan Vim dalam mode Ex:
1
pindah ke baris pertama5
pilih 5 barisd
menghapusx
Simpan dan tutupsumber
gema "a \ nb" | sed '1d' # menghapus baris pertama
cat list.txt | sed '1d'> list.csv # baca list.txt dan tulis list.csv tanpa baris pertama
Perintah lain yang bermanfaat:
grep '^ |' # menemukan karakter pertama (pipa |)
sed 's / | // g' # menghapus pipa
sed 's / // g' # menghapus spasi
sumber
Dengan persentase
Menggunakan
bash
, untuk membersihkan file menggunakan angka persentase dan bukan jumlah baris absolut:Hati-hati karena perintah itu dapat merusak karena menghapus konten di tempat, tanpa membuat salinan.
Ini menghapus 75% baris pertama dari file yang disebutkan.
sumber