Traffine I/O

Bahasa Indonesia

2023-02-03

NLP 100 Exercise bab 2:UNIX Commands

Pengantar

Tokyo Institute of Technology telah menciptakan dan memelihara koleksi latihan NLP yang disebut "NLP 100 Exercise".

https://nlp100.github.io/en/ch02.html

Dalam artikel ini, saya akan memberikan contoh jawaban untuk "Chapter 2: UNIX Commands".

Pengaturan lingkungan

File popular-names.txt menyimpan nama-nama bayi yang lahir di AS dengan jenis kelamin, jumlah kelahiran, dan tahun kelahirannya dalam format yang terpisah-pisah. Buatlah sebuah program dengan spesifikasi di bawah ini. Jalankan program tersebut dengan popular-names.txt sebagai masukan. Selanjutnya, konfirmasikan bahwa hasil yang sama (serupa) dapat diperoleh dengan menjalankan perintah UNIX.

$ wget https://nlp100.github.io/data/popular-names.txt

10. Line count

Hitung jumlah baris dari file tersebut. Konfirmasikan hasilnya dengan menggunakan perintah wc.

$ wc -l popular-names.txt

2780 popular-names.txt

11. Replace tabs into spaces

Ganti setiap kemunculan karakter tab menjadi spasi. Konfirmasikan hasilnya dengan menggunakan perintah sed, tr, atau expand.

$ head -5 popular-names.txt

Mary	F	7065	1880
Anna	F	2604	1880
Emma	F	2003	1880
Elizabeth	F	1939	1880
Minnie	F	1746	1880
$ sed -e 's/\t/ /g' popular-names.txt | head -n 5

Mary F 7065 1880
Anna F 2604 1880
Emma F 2003 1880
Elizabeth F 1939 1880
Minnie F 1746 1880

12. col1.txt from the first column, col2.txt from the second column

Ekstrak nilai kolom pertama dari setiap baris, dan simpan hasilnya ke dalam col1.txt. Ekstrak nilai kolom kedua dari setiap baris, dan simpan hasilnya ke dalam col2.txt. Konfirmasikan hasilnya dengan menggunakan perintah cut.

$ cut -f 1 popular-names.txt > col1.txt
$ cut -f 2 popular-names.txt > col2.txt

13. Merging col1.txt and col2.txt

Gabungkan isi col1.txt dan col2.txt, dan buat sebuah file teks yang setiap barisnya berisi nilai dari kolom pertama dan kedua (dipisahkan dengan karakter tab) dari file aslinya. Konfirmasikan hasilnya dengan menggunakan perintah paste.

$ paste col1.txt col2.txt | head -n 5

Mary	F
Anna	F
Emma	F
Elizabeth	F
Minnie	F

14. First N lines

Menerima sebuah bilangan asli N dari sebuah argumen baris perintah, dan menampilkan baris N pertama dari file tersebut. Konfirmasikan hasilnya dengan menggunakan perintah head.

$ head -n 5 popular-names.txt

Mary	F	7065	1880
Anna	F	2604	1880
Emma	F	2003	1880
Elizabeth	F	1939	1880
Minnie	F	1746	1880

15. Last N lines

Menerima bilangan asli N dari argumen baris perintah, dan menampilkan baris N terakhir dari file. Konfirmasikan hasilnya dengan menggunakan perintah tail.

$ tail -n 5 popular-names.txt

Benjamin	M	13381	2018
Elijah	M	12886	2018
Lucas	M	12585	2018
Mason	M	12435	2018
Logan	M	12352	2018

16. Split a file into N pieces

Menerima bilangan asli N dari argumen baris perintah, dan membagi file input menjadi beberapa bagian N pada batas-batas baris. Konfirmasikan hasilnya dengan menggunakan perintah split.

$ split -l 200 popular-names.txt

17. Distinct strings in the first column

Temukan string yang berbeda (satu set string) dari kolom pertama file. Konfirmasikan hasilnya dengan menggunakan perintah cut, sort, dan uniq.

$ cut -f 1 popular-names.txt | sort -s | uniq

Abigail
Aiden
Alexander
.
.
.
Virginia
Walter
William

18. Sort lines in descending order of the third column

Mengurutkan baris dalam urutan numerik menurun dari kolom ketiga (mengurutkan baris tanpa mengubah konten setiap baris). Konfirmasikan hasilnya dengan menggunakan perintah sort.

$ sort -nrsk 3 ./popular-names.txt | head -n 5

Linda	F	99689	1947
Linda	F	96211	1948
James	M	94757	1947
Michael	M	92704	1957
Robert	M	91640	1947

19. Frequency of a string in the first column in descending order

Temukan frekuensi string di kolom pertama, dan urutkan string berdasarkan urutan frekuensinya. Konfirmasikan hasilnya dengan menggunakan perintah cut, uniq, dan sort.

$ cut -f 1 ./popular-names.txt | sort | uniq -c | sort -rn

 118 James
 111 William
 108 Robert
 .
 .
 .
   1 Julie
   1 Crystal
   1 Carolyn

Referensi

https://nlp100.github.io/en/about.html
https://nlp100.github.io/en/ch02.html

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!