İlk üç sütun hariç tümünü yazdır


112

Çok hantal:

awk '{print " "$4" "$5" "$6" "$7" "$8" "$9" "$10" "$11" "$12" "$13}' things

43
Kullanmaman için herhangi bir sebep var mı cut -f3-?
Cascabel

1
@hhh güzel bir .. Özet cevap fikrini beğendim.
Chris Seymour

2
@Jefromi - çünkü awk'ın sahip olmadığı kesmeyle ilgili satır arabelleğe alma sorunları var: stackoverflow.com/questions/14360640/…
sdaau


@Jefromi - ayrıca eylemlerden cutönce normal ifadelere sahip değildir {}ve alan sınırlayıcılarla (değişken sayıda boşluk?) Çok daha aptaldır ve bunları manuel olarak belirtmeniz gerekir. Bence OP shift N, var olmayan bazı emirleri duymak istedi . En yakını $1="";$2="";(...);print}, ancak benim durumumda bazı önde gelen boşluklar (muhtemelen ayırıcılar) bırakıyor.
Tomasz Gandor

Yanıtlar:


50

Fazladan baştaki veya sondaki boşluk eklemeyen bir çözüm :

awk '{ for(i=4; i<NF; i++) printf "%s",$i OFS; if(NF) printf "%s",$NF; printf ORS}'

### Example ###
$ echo '1 2 3 4 5 6 7' |
  awk '{for(i=4;i<NF;i++)printf"%s",$i OFS;if(NF)printf"%s",$NF;printf ORS}' |
  tr ' ' '-'
4-5-6-7

Sudo_O , üçlü operatörü kullanarak zarif bir iyileştirme önerirNF?ORS:OFS

$ echo '1 2 3 4 5 6 7' |
  awk '{ for(i=4; i<=NF; i++) printf "%s",$i (i==NF?ORS:OFS) }' |
  tr ' ' '-'
4-5-6-7

EdMorton , alanlar arasındaki orijinal boşlukları koruyan bir çözüm sunar:

$ echo '1   2 3 4   5    6 7' |
  awk '{ sub(/([^ ]+ +){3}/,"") }1' |
  tr ' ' '-'
4---5----6-7

BinaryZebra ayrıca iki harika çözüm sunar:
(bu çözümler, orijinal dizeden sonraki boşlukları bile korur)

$ echo -e ' 1   2\t \t3     4   5   6 7 \t 8\t ' |
  awk -v n=3 '{ for ( i=1; i<=n; i++) { sub("^["FS"]*[^"FS"]+["FS"]+","",$0);} } 1 ' |
  sed 's/ /./g;s/\t/->/g;s/^/"/;s/$/"/'
"4...5...6.7.->.8->."

$ echo -e ' 1   2\t \t3     4   5   6 7 \t 8\t ' |
  awk -v n=3 '{ print gensub("["FS"]*([^"FS"]+["FS"]+){"n"}","",1); }' |
  sed 's/ /./g;s/\t/->/g;s/^/"/;s/$/"/'
"4...5...6.7.->.8->."

Larsr'ın yorumlarda verdiği çözüm neredeyse doğrudur:

$ echo '1 2 3 4 5 6 7' | 
  awk '{for (i=3;i<=NF;i++) $(i-2)=$i; NF=NF-2; print $0}' | tr  ' ' '-'
3-4-5-6-7

Bu, larsr çözümünün sabit ve parametreleştirilmiş sürümüdür :

$ echo '1 2 3 4 5 6 7' | 
  awk '{for(i=n;i<=NF;i++)$(i-(n-1))=$i;NF=NF-(n-1);print $0}' n=4 | tr ' ' '-'
4-5-6-7

Eylül 2013'ten önceki diğer tüm cevaplar güzel ancak fazladan boşluk ekleyin:


EdMorton'un cevabı benim için işe yaramadı (bash 4.1.2 (1) -sürüm, GNU Awk 3.1.7 veya bash 3.2.25 (1) -rele, GNU Awk 3.1.5) ancak burada başka bir yol bulundu :echo ' This is a test' | awk '{print substr($0, index($0,$3))}'
elysch

1
@elysch hayır, bu genel olarak çalışmayacak, sadece bazı belirli girdi değerleri verildiğinde çalışıyor gibi görünüyor. Cevabımın altında yorumunuzun altına eklediğim yorumu görün.
Ed Morton

1
Merhaba @fedorqui. Cevabım birinci. Orijinal cevabımda, diğer cevabın neden doğru olmadığını açıklıyordum (fazladan baştaki veya sondaki boşluk). Bazı kişiler yorumlarda geliştirmeler önermişlerdir. OP'den daha doğru bir cevap seçmesini istedik ve o benimkini seçti. Diğer bazı katılımcılar cevabımı oradaki cevaba referans olarak düzenledikten sonra (geçmişe bakın). Senin için anlaşıldı mı Cevabımın anlaşılırlığını artırmak için bana ne tavsiye edersiniz? Şerefe ;-)
olibre

1
Kesinlikle haklısın ve yanlış anlamam için çok üzgünüm. Cevabı hızlı okudum ve orijinal cevabınızı fark etmedim (evet, çok hızlı okudum). Cevabın kendisi için +1, NF-1'e kadar döngü yapmak ve ardından fazladan boşluktan kaçınmak için son öğeyi yazdırmak için güzel bir numara kullanarak. Ve tekrar özür dilerim! (gelecekteki okuyucuların yanlış anlamalarını önlemek için yorumumu bir gün içinde kaldıracak).
fedorqui

1
Bir tür başlık kullanırdım: <cevabınız> ve ardından yatay bir kural ve ardından büyük bir başlık "diğer cevapların karşılaştırması". Aksi takdirde, bu karşılaştırmayı başka bir yanıta taşıyın, çünkü görünüşe göre insanlar "kodumu ver" vizyonunda kısa cevapları tercih etme eğiliminde
oluyorlar :)

75
awk '{for(i=1;i<4;i++) $i="";print}' file

4
Bu , kayıtlarda önde gelen boşluklarla OFSuğraşmadığınız için NFliderlik bırakır.
Chris Seymour

70

kesim kullan

$ cut -f4-13 file

veya awk konusunda ısrar ediyorsanız ve 13 $ son alandır

$ awk '{$1=$2=$3="";print}' file

Başka

$ awk '{for(i=4;i<=13;i++)printf "%s ",$i;printf "\n"}' file

14
Son örnekte "13" yerine "NF" kullanmak muhtemelen daha iyidir.
glenn jackman

2
OP'nin karar vereceği 2 senaryo. 13 son alan ise, NF kullanmak sorun değil. Değilse, 13 kullanmak uygundur.
ghostdog74

3
2. $ 0'ın başından itibaren 3 kopya OFS'yi silmeli. Üçüncüsü daha iyi olur printf "%s ",$i, çünkü içerip $iiçermediğini %sveya benzerlerini bilmiyorsunuz . Ancak bu, sonunda fazladan bir boşluk yazdırır.
şüphelijim

38

Bunu dene:

awk '{ $1=""; $2=""; $3=""; print $0 }'

1
Bu ne kadar dinamik olduğu için güzel. Sonunda sütun ekleyebilir ve komut dosyalarınızı yeniden yazamazsınız.
MinceMan

1
Bu, sorunun sizinle başa çıkmaya çalıştığı sorunu tam olarak gösterir, tam tersini yapın. 100. alandan yazdırmaya ne dersiniz? Başa çıkmadığınız için NFliderlikten ayrıldığınızı söylemeyi unutmayın OFS.
Chris Seymour

24

Bunu yapmanın doğru yolu, bir RE aralığı kullanmaktır, çünkü kaç alanın atlanacağını basitçe belirtmenize izin verir ve kalan alanlar için alanlar arası aralığı korur.

Örneğin, bu soruda tartışıyor göründüğümüz girdi formatı verildiğinde kalan alanlar arasındaki boşluğu etkilemeden ilk 3 alanı atlamak basitçe:

$ echo '1   2 3 4   5    6' |
awk '{sub(/([^ ]+ +){3}/,"")}1'
4   5    6

Baştaki boşlukları ve boş olmayan alanları yerleştirmek istiyorsanız, ancak yine varsayılan FS ile, o zaman:

$ echo '  1   2 3 4   5    6' |
awk '{sub(/[[:space:]]*([^[:space:]]+[[:space:]]+){3}/,"")}1'
4   5    6

Bir karakter kümesinde reddedemeyeceğiniz RE olan bir FS'niz varsa, onu önce tek bir karaktere dönüştürebilirsiniz (RS, bir alan içinde bir RS OLAMAZ, aksi takdirde SUBSEP'i düşünün), tek bir karakter ise idealdir. daha sonra RE aralığı ikamesini uygulayın, ardından OFS'ye dönüştürün. örneğin, "." zincirleri alanları ayırırsa:

$ echo '1...2.3.4...5....6' |
awk -F'[.]+' '{gsub(FS,RS);sub("([^"RS"]+["RS"]+){3}","");gsub(RS,OFS)}1'
4 5 6

Açıktır ki, OFS tek bir karakter ise VE giriş alanlarında görünmüyorsa, bunu şu şekilde azaltabilirsiniz:

$ echo '1...2.3.4...5....6' |
awk -F'[.]+' '{gsub(FS,OFS); sub("([^"OFS"]+["OFS"]+){3}","")}1'
4 5 6

Ardından, alanları yeniden atayan tüm döngü tabanlı çözümlerle aynı sorunu yaşarsınız - FS'ler OFS'lere dönüştürülür. Bu bir sorunsa, GNU awks'in patsplit () işlevine bakmanız gerekir.


Benim için işe yaramadı (bash 4.1.2 (1) -release, GNU Awk 3.1.7 veya bash 3.2.25 (1) -release, GNU Awk 3.1.5) ama burada başka bir yol bulundu :echo ' This is a test' | awk '{print substr($0, index($0,$3))}'
elysch

2
Hayır, $ 1 veya $ 2, $ 3'ün ayarlandığı dizeyi içeriyorsa başarısız olur. Örneğin deneyin echo ' That is a test' | awk '{print substr($0, index($0,$3))}'ve abunun 3 $ 'ın 1 $' ın aiçindeki Thatile eşleştiğini göreceksiniz . Gawk'ın sizin gibi çok eski bir sürümünde, bayrakla RE aralıklarını etkinleştirmeniz gerekir --re-interval.
Ed Morton

2
Haklısın, fark etmedin. Bu arada, yorumunuz için gerçekten minnettarım. Çoğu zaman öğe sayısını belirtmek için "{}" ile bir normal ifade kullanmak istedi ve insanda hiç "--re-interval" görmedi. +1 sizin için.
elysch

1
1gerçek bir koşuldur ve bu nedenle geçerli kaydı yazdırmanın varsayılan awk eylemini çağırır.
Ed Morton

1
ne kadar kurallı olduğunu idk ama şimdi bir cevap ekledim.
Ed Morton

10

Hemen hemen tüm yanıtlar şu anda ya baştaki boşlukları, sondaki boşlukları ya da başka bir ayırıcı sorunu ekliyor. Ayırıcının beyaz boşluk ve çıktı ayırıcısının tek boşluk olduğu dördüncü alandan seçim awkyapmak için şunu kullanabilirsiniz:

awk '{for(i=4;i<=NF;i++)printf "%s",$i (i==NF?ORS:OFS)}' file

Başlangıç ​​alanını parametrelendirmek için şunları yapabilirsiniz:

awk '{for(i=n;i<=NF;i++)printf "%s",$i (i==NF?ORS:OFS)}' n=4 file

Ve ayrıca bitiş alanı:

awk '{for(i=n;i<=m=(m>NF?NF:m);i++)printf "%s",$i (i==m?ORS:OFS)}' n=4 m=10 file

6
awk '{$1=$2=$3="";$0=$0;$1=$1}1'

Giriş

1 2 3 4 5 6 7

Çıktı

4 5 6 7

4
echo 1 2 3 4 5| awk '{ for (i=3; i<=NF; i++) print $i }'

3
Ya da aynı satıra almak için 3 $ 'ı $ 1' e atayın ve ardından NF'yi doğru alan sayısına değiştirin. echo 1 2 3 4 5| awk '{ for (i=3; i<=NF; i++) $(i-2)=$i; NF=NF-2; print $0 }'
larsr

Merhaba @larsr. Önerilen komut satırınız tek doğru cevaptır. Diğer tüm yanıtlar fazladan boşluklar ekler (baştaki veya sondaki). Lütfen komut satırınızı yeni bir cevap içinde gönderin, oylayacağım ;-)
olibre

1
Merhaba @sudo_O, @larsr ile yorumunda önerdiği komut satırı hakkında konuşuyordum. Quiproco'yu (yanlış anlama) anlamadan önce yaklaşık beş dakika geçirdim. Kabul ediyorum, @Vetsin cevabı ORSalanlar arasına yeni satırlar ( ) ekliyor . İnisiyatifiniz için Bravo (Cevabınızı beğendim). Şerefe
olibre

3

Print deyimini kullanmaktan kaçınmanın başka bir yolu:

 $ awk '{$1=$2=$3=""}sub("^"FS"*","")' file

Awk olarak, bir koşul doğru olduğunda yazdırma varsayılan eylemdir.


@Lhf cevabının tüm sorunları var .. sadece daha kısa.
Chris Seymour

Çok iyi fikir;) Cevabımdan daha iyi! (Cevabınızı geçen yıl zaten yükseltmiştim) Şerefe
olibre

awk '{$1=$2=$3=""}sub("^"OFS"+","")' file$ 1, $ 2 ve $ 3 içeriklerini değiştirdikten sonra geriye kalan OFS gibi olmalıdır .

3

Kimsenin açık sözlülük teklif etmediğine inanamıyorum:

while read -r a b c d; do echo "$d"; done < file

Benzer çözüm için +1 ... Ancak filebüyükse (> 10-30KiB) performans sorunları olabilir . Büyük dosyalar için awkçözüm daha iyi performans gösterir.
TrueY

3

1'den 3'e kadar olan seçeneklerde birden fazla boşlukla ilgili sorunlar var (ancak basittir). Birden çok beyaz alanı sorunsuz bir şekilde işleyen 4. ve 5. seçenekleri geliştirmenin nedeni budur. Elbette, 4 veya 5 numaralı seçenekler n=0her ikisiyle birlikte kullanılırsa, n=0bölünme olmadığı anlamına geldiği için öndeki beyaz boşlukları koruyacaktır .

seçenek 1

Basit bir kesim çözümü (tek sınırlayıcılarla çalışır):

$ echo '1 2 3 4 5 6 7 8' | cut -d' ' -f4-
4 5 6 7 8

seçenek 2

Bir awk yeniden hesaplamaya zorlamak bazen eklenen boşlukların problemini çözer (awk'nin bazı sürümleriyle çalışır):

$ echo '1 2 3 4 5 6 7 8' | awk '{ $1=$2=$3="";$0=$0;} NF=NF'
4 5 6 7 8

3. Seçenek

Biçimlendirilmiş her alanın yazdırılması printfdaha fazla kontrol sağlayacaktır:

$ echo '    1    2  3     4   5   6 7     8  ' |
  awk -v n=3 '{ for (i=n+1; i<=NF; i++){printf("%s%s",$i,i==NF?RS:OFS);} }'
4 5 6 7 8

Ancak, önceki yanıtların tümü alanlar arasındaki tüm FS'leri OFS olarak değiştirir. Buna birkaç çözüm geliştirelim.

4. seçenek

Alanları ve sınırlayıcıları kaldırmak için sub içeren bir döngü daha taşınabilirdir ve FS'nin OFS'ye değiştirilmesini tetiklemez:

$ echo '    1    2  3     4   5   6 7     8  ' |
awk -v n=3 '{ for(i=1;i<=n;i++) { sub("^["FS"]*[^"FS"]+["FS"]+","",$0);} } 1 '
4   5   6 7     8

NOT: "^ [" FS "] *" başında boşluklar olan bir girişi kabul etmek içindir.

Seçenek 5

Fazladan baştaki veya sondaki boşluk eklemeyen bir çözüm oluşturmak ve gensubGNU awk işlevini kullanarak mevcut beyaz boşluğu korumak oldukça mümkündür , aşağıdaki gibi:

$ echo '    1    2  3     4   5   6 7     8  ' |
awk -v n=3 '{ print gensub("["FS"]*([^"FS"]+["FS"]+){"n"}","",1); }'
4   5   6 7     8 

Ayrıca, bir sayı verilen bir alan listesini değiştirmek için de kullanılabilir n:

$ echo '    1    2  3     4   5   6 7     8  ' |
  awk -v n=3 '{ a=gensub("["FS"]*([^"FS"]+["FS"]+){"n"}","",1);
                b=gensub("^(.*)("a")","\\1",1);
                print "|"a"|","!"b"!";
               }'
|4   5   6 7     8  | !    1    2  3     !

Tabii ki, böyle bir durumda, OFS, çizginin her iki kısmını da ayırmak için kullanılır ve alanların sondaki beyaz boşluğu hala yazdırılır.

Not1: ["FS"]* giriş satırında baştaki boşluklara izin vermek için kullanılır.


Merhaba BZ Cevabınız güzel. Ancak Seçenek 3, boşlukla başlayan dizede çalışmaz (örneğin " 1 2 3 4 5 6 7 8 "). Seçenek 4 güzeldir, ancak boşlukla başlayan dizeyi kullanarak başında bir boşluk bırakın. Bunun düzeltilebilir olup olmadığını düşünüyor musun? echo " 1 2 3 4 5 6 7 8 " | your awk script | sed 's/ /./g;s/\t/->/g;s/^/"/;s/$/"/'Baştaki / ortadaki / sondaki boşlukları doğrulamak için komutu kullanabilirsiniz ... Şerefe;)
olibre

Merhaba @olibre. Seçenek 3'ün beyaz boşlukla başarısız olması, seçenek 4 ve 5'in geliştirilmesinin nedenidir. Seçenek 4, yalnızca girişte varsa ve n, 0'a (n = 0) ayarlanmışsa , başında bir boşluk bırakır . Alan seçimi olmadığında doğru yanıt olduğuna inanıyorum (IMO'yu düzeltecek bir şey yok). Şerefe.

Tamam. Ek bilgi için teşekkürler :-) Lütfen bu ekstra bilgileri vererek yanıtınızı geliştirin :-) Şerefe
olibre

Mükemmel :-) Kullanıcınızın devre dışı bırakılması ne yazık :-(
olibre

1

Cut, sütunları silmeyi kolaylaştıran (ve hızlı) yapan bir --complement bayrağına sahiptir. Ortaya çıkan sözdizimi yapmak istediklerinize benzer - çözümü daha kolay okunur / anlaşılır hale getirir. Tamamlayıcı, bitişik olmayan sütunları silmek istediğiniz durumda da çalışır.

$ foo='1 2 3 %s 5 6 7'
$ echo "$foo" | cut --complement -d' ' -f1-3
%s 5 6 7
$

Cevabınızı biraz daha açıklayabilir misiniz lütfen?
Zulu

Yukarıdaki düzenleme anlamaya yardımcı oluyor mu? Önemli olan tamamlayıcı kesim bayrağını kullanmaktır. Çözüm, AWK veya perl tabanlı çözümlerden daha hızlı ve daha özlü bir uygulama olmalıdır. Ayrıca keyfi sütunlar kesilebilir.
Michael Back

1

Baştaki veya sondaki boşluk eklemeyen Perl çözümü:

perl -lane 'splice @F,0,3; print join " ",@F' file

Perl @Fautosplit dizisi dizinde 0başlarken awk alanları ile başlar$1


Virgülle ayrılmış veriler için Perl çözümü:

perl -F, -lane 'splice @F,0,3; print join ",",@F' file

Python çözümü:

python -c "import sys;[sys.stdout.write(' '.join(line.split()[3:]) + '\n') for line in sys.stdin]" < file


0

Benim için talebe yönelik en kompakt ve uyumlu çözüm

$ a='1   2\t \t3     4   5   6 7 \t 8\t '; 
$ echo -e "$a" | awk -v n=3 '{while (i<n) {i++; sub($1 FS"*", "")}; print $0}'

Ve foo.txt örnek dosyası olarak işlenecek daha fazla satırınız varsa , i'yi 0'a sıfırlamayı unutmayın:

$ awk -v n=3 '{i=0; while (i<n) {i++; sub($1 FS"*", "")}; print $0}' foo.txt

Forumunuz için teşekkürler.


0

İlk çok oylanan ama yanlış cevaptan rahatsız olduğum için, oraya bir cevap yazacak kadar buldum ve burada yanlış cevaplar bu şekilde işaretlenmiş, işte benim payım. Cevabı bu kadar karmaşık hale getirmek için hiçbir neden göremediğim için önerilen çözümleri sevmiyorum.

5 $ 'dan sonra bir IP adresinin daha fazla metin olabileceği veya hiç metin olmayabileceği bir günlüğüm var. 5 $ 'dan sonra herhangi bir şey olursa, IP adresinden satırın sonuna kadar her şeye ihtiyacım var. Benim durumumda, bu aslında bir awk programı değil, bir awk oneliner değil, bu yüzden awk sorunu çözmelidir. Eski güzel görünümlü ve en çok oy verilen ancak tamamen yanlış cevabı kullanarak ilk 4 alanı kaldırmaya çalıştığımda:

echo "  7 27.10.16. Thu 11:57:18 37.244.182.218 one two three" | awk '{$1=$2=$3=$4=""; printf "[%s]\n", $0}'

yanlış ve gereksiz yanıtlar veriyor (göstermek için [] ekledim):

[    37.244.182.218 one two three]

Bunun yerine, sütunlar kesme noktasına kadar sabit genişlikteyse ve awk gerekliyse, doğru ve oldukça basit cevap:

echo "  7 27.10.16. Thu 11:57:18 37.244.182.218 one two three" | awk '{printf "[%s]\n", substr($0,28)}'

istenen çıktıyı üreten:

[37.244.182.218 one two three]

0

Bu başka olasılığı buldum, belki de faydalı olabilir ...

awk 'BEGIN {OFS=ORS="\t" }; {for(i=1; i<14; i++) print $i " "; print $NF "\n" }' your_file

Not: 1. Tablo verileri için ve sütun $ 1 - $ 14 için


0

Kesim kullanın:

cut -d <The character between characters> -f <number of first column>,<number of last column> <file name>

Örneğin: Şunları file1içeriyorsa:car.is.nice.equal.bmw

Çalıştır: cut -d . -f1,3 file1 yazdıracakcar.is.nice


Çözümünüz geri kalmış gibi görünüyor. Lütfen soru başlığını inceleyin * hariç * ilk üç sütunu yazdırın
Stefan Crain

-1

Bu, önceki cevapların bazılarından çok uzak değil, ancak birkaç sorunu çözüyor:

cols.sh:

#!/bin/bash
awk -v s=$1 '{for(i=s; i<=NF;i++) printf "%-5s", $i; print "" }'

Şimdi başlangıç ​​sütunu olacak bir argümanla çağırabileceğiniz:

$ echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14" | ./cols.sh 3 
3    4    5    6    7    8    9    10   11   12   13   14

Veya:

$ echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14" | ./cols.sh 7 
7    8    9    10   11   12   13   14

Bu 1-endekslidir; sıfır indekslemeyi tercih ediyorsanız, i=s + 1bunun yerine kullanın.

Ayrıca, başlangıç ​​dizini ve bitiş dizini için bağımsız değişkenlere sahip olmak istiyorsanız , dosyayı şu şekilde değiştirin:

#!/bin/bash
awk -v s=$1 -v e=$2 '{for(i=s; i<=e;i++) printf "%-5s", $i; print "" }'

Örneğin:

$ echo "1 2 3 4 5 6 7 8 9 10 11 12 13 14" | ./cols.sh 7 9 
7    8    9

%-5sHizalar 5 karakterli çapında sütun gibi sonuç; bu yeterli değilse, sayıyı artırın veya %shizalamayı önemsemiyorsanız bunun yerine (boşlukla) kullanın.


-1

% Problemini önleyen ve yazdırılacak 4'ten az sütun varsa hiçbir şey döndürmemesi (dönüş karakteri yok) açısından benzersiz olan AWK printf tabanlı çözüm:

awk 'NF > 3 { for(i=4; i<NF; i++) printf("%s ", $(i)); print $(i) }'

Test yapmak:

$ x='1 2 3 %s 4 5 6'
$ echo "$x" | awk 'NF > 3 { for(i=4; i<NF; i++) printf("%s ", $(i)); print $(i) }'
%s 4 5 6
$ x='1 2 3'
$ echo "$x" | awk 'NF > 3 { for(i=4; i<NF; i++) printf("%s ", $(i)); print $(i) }'
$ x='1 2 3 '
$ echo "$x" | awk 'NF > 3 { for(i=4; i<NF; i++) printf("%s ", $(i)); print $(i) }'
$
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.