belli sutunları secmek ve sayı diyilse

Başlatan Mx0Ub, 17 Ekim 2011 - 00:47:22

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

Mx0Ub

iyi günler

3 sutunlu bir veri var
3 cü sutunda sayı olan kısımların silinmesi gerekiyor
bunu nasıl yapabilir ?

örnek kesit

122 fggh ghhh
123 hjj   ghy
45 bura nezaman
12 hjj   1266
Not:
Hic bi sorumluluk kabul edilmez yapılan yorumlardan ve verilen kodlardan

cagriemer

Ornegin test dosyamiz icinde ucuncu sutundaki degerlerden sayi ile baslayanlar disindakileri ekrana bastiran bir komut soyle verilebilir;

cat test | awk '{print $3}' | grep -v ^[1-9]

alquirel


cagriemer

Alıntı yapılan: alquirel - 17 Ekim 2011 - 02:29:04
Konu doğru yerde mi? Basic? Bash?

Henuz kategorileri kontrol etmeye baslamamistim fakat uyariniz icin tesekkur ederim. Isimi kolaylastirdi.

Mx0Ub

yer olarak ben konsolda calısyorum


cat test | awk '{print $3}' | grep -v ^[1-9]

bu sekilde 1 , 2 ci sutunları kopyalayamıyorum,onlardada sayı var awk ile seçemiyorum

aslında bu awk secmek yerine silse tam olarak olucaktı
Not:
Hic bi sorumluluk kabul edilmez yapılan yorumlardan ve verilen kodlardan

heartsmagic

Örnek veriyi buraya geçersen belki daha fazla yardımcı olur arkadaşlar. Ayrıca tam olarak ne yapmak istediğini de özetlersen fena olmaz.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Mx0Ub

#6
evet ya örnek unutuyorum lazım

122 fggh ghhh
123 hjj   ghy
45 bura nezaman
12 hjj   1266

işte bu bir kesit burda 3 sutundaki sayı kısımları silmek gerekiyor


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 19 Ekim 2011 - 00:55:54

soruyuda duzelttim :)
Not:
Hic bi sorumluluk kabul edilmez yapılan yorumlardan ve verilen kodlardan

cagriemer

Verdiginiz ornekten beklediginiz ciktiyi da yazarsaniz daha iyi olur.

grep -v [0-9]$ test

test adli dosyanin ucuncu sutununda (dolayisiyla satir sonu) sayi disinda baska bir sey olanlari bas.

122 fggh ghhh
123 hjj ghy
45 bura nezaman


gibi bir cikti verir verdiginiz ornekte aradiginiz boyle bir sey mi?


Mx0Ub

cıktı bunun gibi olcak

122 fggh ghhh
123 hjj   ghy
45 bura nezaman
12 hjj 

3 cu sutun  daki sayıları silcez
Not:
Hic bi sorumluluk kabul edilmez yapılan yorumlardan ve verilen kodlardan

cagriemer

Mevcut kabuk bilgimle bir cozum bulamadim. Her satiri while do ile teker teker if grep'e sokup ciktiya gore awk ile belirtilen satiri alabiliriz gibime geldi ama bu sadece bir tahmin. Sakin kafayla bakmak lazim. Bir de belki daha zarif bir yontem de bulunur ama ben goremedim su anda.

sem

Bash ile olması şart mıdır?

Çaıştığımız metin dosyası mıdır?

İfadeler düzenli midir? Örneğin sütunlar arası nedir? tab mıdır, boşluk mudur, 3 bşluk mudur?

Son soru meraktan sadece...
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

Mx0Ub

500 mb lik metin dosyası unix biçiminde
ifadeler duzenli derken sayı ve rakamlar var

sutun arası bosluk

bash olmasada olur tabi
Not:
Hic bi sorumluluk kabul edilmez yapılan yorumlardan ve verilen kodlardan

Felâsife

Metin editörü olursa bunu Kde'nin Kwrite'si yapabiliyor.
3 bloktan istediğiniz blok'u "blok seçim kipiyle" silebilirsiniz.

Normalde Kde4 te yok ama Kwrite ayarından Görünüm > Gelişmiş kullanıcı kipini etkinleştir (Kde3 kipi) tik'ni işaretleyin ve Düzen > Blok seçim kipi.
Bu kadar.  :)

Maceraya hazır mısın!  Bir BSD almaz mısın?

hitokiri

heim metin düzenleyici dedinde aklıma geldi XD
sed kullanılabilir   bence bi kaç satırda olursa ,
~$ a="dsadas2321321 dsadsadas4444 dsadsadsadas13123"
~$ x=`echo $a|awk '{print $3}'`
~$ y=`echo $a|awk '{print $3}'|tr -d [0-9]`
~$ echo $a|sed -e "s/$x/$y/g"
dsadas2321321 dsadsadas4444 dsadsadsadas


Mx0Ub

hitokori orda a degerini  /a dosyasına eşitlediğimde su cıktıyı veriyor

sed: -e ifade #1, harf 0: daha önce bir düzenli ifade yok
Not:
Hic bi sorumluluk kabul edilmez yapılan yorumlardan ve verilen kodlardan

sadokbjk

Biraz geç cevap olacak ama olsun, belki başkalarının işine yarar.
Şu komut istenileni yapıyor

awk '$3~ "^[0-9][0-9]*$" {$3=""} {print}' testfile