Sadık KILIÇ

Web Tabanlı Hafıza Yerleşimi

AWK String İşlemleri

awk içerisinde basit string işlemlerine örnek olması için betik hazırladım. data_file isimli dosyamız verilerimizi içersin ve içeriği aşağıdaki gibi olsun.

cat data_file
kelime1="Mazhar" kelime2="Fuat" kelime3="Ozkan"
kelime2="Siyah" kelime3="Beyaz"
kelime1="Yol" kelime4="Su" kelime3="Elektrik"
kelime4="Athos" kelime1="Porthos" kelime3="Aramis" kelime2="Dartanyan"
kelime3="Metin" kelime1="Ali" kelime2="Feyyaz"

Görüldüğü gibi

  • kelime1, kelime2, kelime3 ve kelime4 olarak isimlendirilmiş parametreler ve değerleri mevcut.
  • Veriler sıralı değil ve herhangi bir satırda paramatrelerin tamami bulunmayabiliyor.

İstenen;

  • Her parametreye ait veriler aynı sutunda olacak şekilde bir tablo görünümünde olsun
  • Herhangi bir satırda belirli bir parametre yok ise, sutunda “-” olarak görünsün
  • Bu işlem büyük-küçük harf duyarsız yapılsın
  • Çıktı çift tıknak içermesin
sed 's/\"//g' data_file |  awk '
BEGIN {
	FORMAT="%-15s%-15s%-15s%s\n"
	printf FORMAT,"[kelime1]","[kelime2]","[kelime3]","[kelime4]"
}
{
	if (match(tolower($0),"kelime1=[A-Za-z]*") > 0){
		kelime1=(substr($0,RSTART+8,RLENGTH-8))
	}else {
		kelime1="-"
	}
	if (match(tolower($0),"kelime2=[A-Za-z]*") > 0){
		kelime2=(substr($0,RSTART+8,RLENGTH-8))
	}else {
		kelime2="-"
	}
	if (match(tolower($0),"kelime3=[A-Za-z]*") > 0){
		kelime3=(substr($0,RSTART+8,RLENGTH-8))
	}else {
		kelime3="-"
	}
	if (match(tolower($0),"kelime4=[A-Za-z]*") > 0){
		kelime4=(substr($0,RSTART+8,RLENGTH-8))
	}else {
		kelime4="-"
	}
printf FORMAT,kelime1,kelime2,kelime3,kelime4
}'

Çıktı;

[kelime1]      [kelime2]      [kelime3]      [kelime4]
Mazhar         Fuat           Ozkan          -
-              Siyah          Beyaz          -
Yol            -              Elektrik       Su
Porthos        Dartanyan      Aramis         Athos
Ali            Feyyaz         Metin          -

, , ,

Leave a Reply

Your email address will not be published. Required fields are marked *