Manipulasi data besar untuk kesenangan dan keuntungan bagian 2
- 859
- 149
- Simon Cormier
Di bagian pertama dari seri manipulasi data besar ini - yang mungkin ingin Anda baca terlebih dahulu jika Anda belum membacanya; Manipulasi data besar untuk kesenangan dan laba Bagian 1 - kita membahas secara panjang lebar berbagai terminologi dan beberapa ide seputar data besar, atau lebih khusus karena berkaitan dengan penanganan, transformasi, mood, munging, parsing, perselisihan, mengubah dan memanipulasi data. Seringkali istilah -istilah ini digunakan secara bergantian dan sering kali penggunaannya tumpang tindih. Kami juga melihat set alat bash pertama yang dapat membantu kami dengan pekerjaan yang terkait dengan istilah -istilah ini.
Artikel ini akan mengeksplorasi serangkaian alat bash lebih lanjut yang dapat membantu kami saat memproses dan memanipulasi data besar berbasis teks (atau dalam beberapa kasus biner). Seperti disebutkan dalam artikel sebelumnya, transformasi data secara umum adalah topik semi-endless karena ada ratusan alat untuk setiap format teks tertentu. Ingatlah bahwa kadang-kadang menggunakan alat bash mungkin bukan solusi terbaik, karena alat di luar rak dapat melakukan pekerjaan yang lebih baik. Yang mengatakan, seri ini khusus untuk semua (banyak) di waktu lain ketika tidak ada alat yang tersedia untuk mendapatkan data Anda dalam format pilihan Anda.
Dan, jika Anda ingin mempelajari mengapa manipulasi data besar bisa menguntungkan dan menyenangkan ... silakan baca Bagian 1 terlebih dahulu.
Dalam tutorial ini Anda akan belajar:
- Lebih Banyak Data Besar Bertengkel / Parsing / Penanganan / Manipulasi / Teknik Transformasi
- Alat bash apa yang tersedia untuk membantu Anda, khususnya untuk aplikasi berbasis teks
- Contoh menunjukkan metode dan pendekatan yang berbeda
Persyaratan dan konvensi perangkat lunak yang digunakan
Kategori | Persyaratan, konvensi atau versi perangkat lunak yang digunakan |
---|---|
Sistem | Distribusi Linux-independen |
Perangkat lunak | Baris perintah bash, sistem berbasis Linux |
Lainnya | Utilitas apa pun yang tidak termasuk dalam shell bash secara default dapat diinstal menggunakan sudo apt-get install-name utilitas (atau instalasi yum untuk sistem berbasis redhat) |
Konvensi | # - mengharuskan Linux -Commands untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah$-mengharuskan Linux-Commands untuk dieksekusi sebagai pengguna biasa |
Contoh 1: AWK
Kembali ke data yang kami gunakan di artikel pertama kami dalam seri ini (bagian kecil yang diunduh dari database Wikipedia), kami dapat menggunakan AWK untuk mulai memanipulasi data:
$ GREP '31197816' Enwiki-latest-halaman-artikel-multictream-index19.TXT-P30121851P31308442 269019710: 31197816: Linux adalah teman saya $ grep '31197816' Enwiki-latest-pages-artikel-multictream-index19.txt-p30121851p31308442 | awk 'cetak $ 2' adalah
Pertama kami menggunakan item tertentu dalam file database teks datar. Setelah kami memiliki output (269019710: 31197816: Linux adalah teman saya), kami kemudian mencoba mencetak kolom kedua dengan menggunakan instruksi Cetak $ 2
(Cetak kolom kedua) ke AWK
, Tapi ini gagal, rendering Adalah
. Alasan untuk ini adalah bahwa AWK
utilitas secara default akan menggunakan whitespace (ruang atau tab) karena pemisahnya. Kami dapat mengkonfirmasi ini dengan membaca manual (pria awk
), atau hanya dengan pengujian;
$ echo -e 'test1 \ ttest2' test1 test2 $ echo -e 'test1 \ ttest2' | awk 'print $ 2' test2 $ echo -e 'test1 test2' | awk 'print $ 2' test2
Di baris pertama kami memasukkan tab ekspresi reguler (regex) (\T
) dalam output yang akan dihasilkan oleh gema
dan kami mengaktifkan sintaks ekspresi reguler dengan menentukan -e
ke gema
. Jika Anda ingin mempelajari lebih lanjut tentang ekspresi reguler di Bash dan di tempat lain, silakan lihat Bash Regexps untuk pemula dengan contoh, Lanjutan Bash Regex dengan contoh dan ekspresi reguler Python semi yang terkait dengan contoh-contoh.
Selanjutnya kita lagi menggunakan AWK
Untuk mencetak kolom kedua Cetak $ 2
dan melihat bahwa output kali ini benar. Akhirnya kami menguji dengan "dan sekali lagi melihat output dengan benar sebagai test2
. Kami juga dapat melihat dalam contoh sebelumnya bahwa teks tersebut 269019710: 31197816: Linux
Dan Adalah
dipisahkan oleh ruang - yang cocok dengan kerja AWK
. Informasi terperinci tentang pekerjaan AWK
bermanfaat di sini, karena sering data diformat dengan berbagai cara. Anda dapat melihat spasi, tab, titik dua, titik koma, dan simbol lainnya yang digunakan sebagai pemisah lapangan. Dan itu menjadi lebih kompleks saat berhadapan dengan HTML, XML, JSON, MD dll. format.
Mari kita ubah pemisah dengan menggunakan -F
opsi untuk AWK
:
$ GREP '31197816' Enwiki-latest-halaman-artikel-multictream-index19.txt-p30121851p31308442 | awk -f ': "print $ 2' 31197816
Persis apa yang kita butuhkan. -F
dijelaskan dalam AWK
manual sebagai pemisah bidang input. Anda dapat melihat bagaimana menggunakan AWK untuk mencetak berbagai kolom yang dirasakan dalam data (Anda bisa menukar $ 2
ke $ 3
Untuk mencetak kolom ketiga, dll.), sehingga kita dapat memprosesnya lebih jauh ke dalam format yang kita sukai. Mari, untuk mengumpulkan, mengubah urutan bidang dan menjatuhkan satu bidang yang tidak kita pikir kita butuhkan:
$ GREP '31197816' Enwiki-latest-halaman-artikel-multictream-index19.txt-p30121851p31308442 | awk -f ': "print $ 3" โโ\ t "$ 2'> out $ cat out linux adalah teman saya 31197816
Besar! Kami mengubah urutan kolom 2 dan 3, dan mengirim output ke file baru, dan mengubah pemisah ke a tab
(Terima kasih kepada "\T"
masukkan dalam pernyataan cetak). Jika kita sekarang cukup memproses seluruh file:
$ awk -f ': "print $ 3" โโ\ t "$ 2' enwiki-latest-halaman-artikel-multi-index19.txt-p30121851p31308442> out $
Seluruh data input diubah secara struktural ke format baru! Selamat datang di dunia yang menyenangkan manipulasi data besar. Anda dapat melihat bagaimana dengan beberapa perintah bash sederhana, kami dapat secara substansial merestrukturisasi/mengubah file sesuai keinginan kami. Saya selalu menemukan Pesta
untuk menjadi yang paling dekat dengan toolset yang ideal untuk manipulasi data besar, dikombinasikan dengan beberapa alat di luar rak dan mungkin pengkodean Python. Salah satu alasan utama untuk ini adalah banyak alat yang tersedia di bash yang membuat manipulasi data besar lebih mudah.
Mari selanjutnya verifikasi pekerjaan kita
wc -l enwiki-latest-halaman-artikel-multictream-index19.txt-p30121851p31308442 329956 enwiki-latest-halaman-artikel-multi-index19.txt -p30121851p31308442 $ wc -l out 329956 out $ grep '31197816' out linux adalah teman saya 31197816
Hebat - jumlah baris yang sama ada di file asli dan yang dimodifikasi. Dan contoh spesifik yang kami gunakan sebelumnya masih ada. Semuanya bagus. Jika Anda suka, Anda dapat menggali lebih jauh dengan perintah seperti kepala
Dan ekor
terhadap kedua file untuk memverifikasi garis terlihat diubah dengan benar di seluruh papan.
Anda bahkan dapat mencoba dan membuka file di editor teks favorit Anda, tetapi saya pribadi akan merekomendasikan vi
Karena jumlah garis mungkin besar, dan tidak semua editor teks berurusan dengan baik dengan ini. vi
Butuh beberapa saat untuk belajar, tetapi ini adalah perjalanan yang layak dilakukan. Setelah Anda menjadi baik vi
, Anda tidak akan pernah melihat ke belakang - itu tumbuh pada Anda sehingga untuk berbicara.
Contoh 2: TR
Kita bisa menggunakan tr
utilitas untuk menerjemahkan atau menghapus beberapa karakter:
$ GREP '31197816' Enwiki-latest-halaman-artikel-multictream-index19.txt-p30121851p31308442 | tr ': "\ t' 269019710 31197816 Linux adalah teman saya
Di sini kami mengubah kolon pemisah lapangan kami (:
) ke tab (\T
). Mudah dan mudah, dan sintaksis berbicara sendiri.
Anda juga bisa menggunakan tr
untuk menghapus karakter apa pun:
$ GREP '31197816' Enwiki-latest-halaman-artikel-multictream-index19.txt-p30121851p31308442 | tr -d ':' | tr -d '[0-9]' Linux adalah teman saya
Anda dapat melihat bagaimana kami pertama kali menghapus :
dari output dengan menggunakan hapus (-D
) opsi untuk tr
, dan selanjutnya kami menghapus - menggunakan ekspresi reguler - angka apa pun dalam kisaran 0-9 ([0-9]
).
Perhatikan bagaimana mengubah :
: ke \T
Masih tidak memungkinkan kita untuk menggunakan AWK tanpa mengubah pemisah lapangan, karena sekarang ada kedua tab (\T
) dan spasi dalam output, dan keduanya terlihat secara default (masuk AWK
) sebagai pemisah lapangan. Jadi mencetak $ 3
Dengan AWK mengarah ke kata pertama (sebelum ruang terlihat):
$ GREP '31197816' Enwiki-latest-halaman-artikel-multictream-index19.txt-p30121851p31308442 | tr ': "\ t' | awk 'print $ 3' linux
Ini juga menyoroti mengapa selalu sangat penting untuk menguji, menguji ulang, dan menguji kembali semua ekspresi reguler dan data transformasi/memanipulasi data Anda.
Kesimpulan
Banyak alat dalam bash membuat manipulasi data besar menyenangkan dan dalam beberapa kasus sangat mudah. Dalam artikel kedua ini dalam seri ini, kami terus menjelajahi alat bash yang dapat membantu kami dengan manipulasi data besar.
Nikmati perjalanan, tetapi ingat peringatan yang diberikan pada akhir artikel pertama ... data besar tampaknya dapat memiliki pikirannya sendiri, dan ada bahaya yang melekat dalam bekerja dengan banyak data (atau dengan masukan yang berlebihan, seperti dalam setiap hari hidup), dan ini adalah (terutama) overload persepsi, penjangkauan kesempurnaan, waktu yang hilang dan korteks prefrontal (dan area otak lainnya) terlalu sering digunakan. Semakin kompleks proyek, data sumber atau format target, semakin besar risikonya. Berbicara dari banyak pengalaman di sini.
Cara yang baik untuk menangkal bahaya ini adalah dengan menetapkan batas waktu yang ketat untuk bekerja dengan set data yang kompleks dan besar. Misalnya, 2 jam (maks) per hari. Anda akan terkejut apa yang dapat Anda capai jika Anda mengatur pikiran Anda dua jam, dan jangan membahasnya, secara konsisten. Jangan bilang aku tidak memperingatkanmu ๐
Beri tahu kami pemikiran Anda di bawah ini - set data besar yang menarik, strategi (baik teknis dan gaya hidup/pendekatan), dan ide -ide lainnya dipersilakan!
Tutorial Linux Terkait:
- Manipulasi data besar untuk kesenangan dan keuntungan bagian 3
- Manipulasi data besar untuk kesenangan dan keuntungan bagian 1
- Hal -hal yang harus diinstal pada ubuntu 20.04
- Pengantar Otomatisasi Linux, Alat dan Teknik
- Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
- Menguasai loop skrip bash
- Loop bersarang dalam skrip bash
- Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
- Menangani input pengguna dalam skrip bash
- Ubuntu 20.04 trik dan hal -hal yang mungkin tidak Anda ketahui
- ยซ Manipulasi data besar untuk kesenangan dan keuntungan bagian 1
- Mengambil halaman web menggunakan wget, curl dan lynx ยป