Linux Terminalinde Eğlence - Kelime ve Karakter Sayılarıyla Oynayın


Linux komut satırının kendisi çok eğlencelidir ve birçok sıkıcı görev çok kolay ve mükemmel bir şekilde gerçekleştirilebilir. Bu makalede göreceğimiz şey, kelimelerle ve karakterlerle oynamak, bunların bir metin dosyasındaki sıklığı vb.'dir.

Bir metin dosyasındaki kelimeleri ve karakterleri değiştirmek amacıyla Linux komut satırını değiştirmek için aklımıza gelen tek komut wc komutudur.

Kelime sayımı anlamına gelen bir 'wc' komutu, bir metin dosyasından Yeni Satır, kelime ve bayt sayımlarını Yazdırma yeteneğine sahiptir.

Metin dosyasını analiz etmek amacıyla küçük komut dosyalarıyla çalışmak için bir metin dosyamızın olması gerekir. Tekdüzeliği korumak için aşağıda açıklandığı gibi man komutunun çıktısını içeren bir metin dosyası oluşturuyoruz.

man man > man.txt

Yukarıdaki komut, 'man' komutu için 'manuel sayfa' içeriğini içeren bir 'man.txt' metin dosyası oluşturur.

Yukarıda oluşturulan 'Metin Dosyası'nda en sık kullanılan kelimeleri aşağıdaki betiği çalıştırarak kontrol etmek istiyoruz.

cat man.txt | tr ' '  '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]' | sort | uniq -c | sort -rn | head
Örnek Çıktı
7557 
262 the 
163 to 
112 is 
112 a 
78 of 
78 manual 
76 and 
64 if 
63 be

Yukarıdaki tek satırlık basit komut dosyası, metin dosyasında en sık görülen on kelimeyi ve bunların görünme sıklığını gösterir.

Aşağıdaki komutu kullanarak bir kelimeyi tek tek parçalara ayırmaya ne dersiniz?

echo 'tecmint team' | fold -w1
Örnek Çıktı
t 
e 
c 
m 
i 
n 
t 
t 
e 
a 
m

Not: Burada '-w1' genişlik içindir.

Şimdi bir metin dosyasındaki her kelimeyi parçalayacağız, sonucu sıralayacağız ve en sık kullanılan on karakterin sıklığıyla istenen çıktıyı elde edeceğiz.

fold -w1 < man.txt | sort | uniq -c | sort -rn | head
Örnek Çıktı
8579  
2413 e
1987 a
1875 t
1644 i
1553 n
1522 o
1514 s
1224 r
1021 l

Metin dosyasında en sık kullanılan karakterleri büyük ve küçük harflerle ve oluşma sıklıkları ile farklı şekilde almaya ne dersiniz?

fold -w1 < man.txt | sort | tr '[:lower:]' '[:upper:]' | uniq -c | sort -rn | head -20
Örnek Çıktı
11636  
2504 E 
2079 A 
2005 T 
1729 I 
1645 N 
1632 S 
1580 o
1269 R 
1055 L 
836 H 
791 P 
766 D 
753 C 
725 M 
690 U 
605 F 
504 G 
352 Y 
344 .

Noktalama işaretinin bulunduğu yukarıdaki çıktıyı kontrol edin. 'tr' komutuyla noktalama işaretlerini kaldıralım. İşte başlıyoruz:

fold -w1 < man.txt | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -20
Örnek Çıktı
  11636  
  2504 E 
  2079 A 
  2005 T 
  1729 I 
  1645 N 
  1632 S 
  1580 O 
  1550 
  1269 R 
  1055 L 
   836 H 
   791 P 
   766 D 
   753 C 
   725 M 
   690 U 
   605 F 
   504 G 
   352 Y

Artık üç metin dosyam var, çıktıyı görmek için yukarıdaki tek satırlık betiği çalıştıralım.

cat *.txt | fold -w1 | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -8
Örnek Çıktı
  11636  
   2504 E 
   2079 A 
   2005 T 
   1729 I 
   1645 N 
   1632 S 
   1580 O

Daha sonra en az on harf uzunluğunda olan nadir harfleri üreteceğiz. İşte basit komut dosyası.

cat man.txt | tr '' '2' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | tr -d '[0-9]' | sort | uniq -c | sort -n |  grep -E '..................' | head
Örnek Çıktı
1        ────────────────────────────────────────── 
1        a all 
1        abc             any or all arguments within   are optional 
1               able  see setlocale for precise details 
1        ab              options delimited by  cannot be used together 
1               achieved by using the less environment variable 
1              a child process returned a nonzero exit status 
1               act as if this option was supplied using the name as a filename 
1               activate local mode  format and display  local  manual  files 
1               acute accent

Not: Tüm sonuçlar oluşturulana kadar yukarıdaki komut dosyasında giderek daha fazla nokta bulunur. On karakter eşleşmesi elde etmek için .{10} kullanabiliriz.

Bu basit komut dosyaları aynı zamanda İngilizce'de en sık görülen kelime ve karakterleri de öğrenmemizi sağlar.

Şimdilik bu kadar. Sizlerin okumayı seveceği ilginç ve alışılmışın dışında, bilinmeye değer bir konuyla yine karşınızda olacağım. Aşağıdaki yorum bölümünde bize değerli geri bildirimlerinizi iletmeyi unutmayın.

Ayrıca Okuyun: Linux'un 20 Komik Komutu