Soru Sed Awk Greph Past...

freestaff

Öğrenci
Katılım
15 Eylül 2015
Mesajlar
12
Reaksiyon puanı
1
Puanları
3
Merhaba,
Grep, Awk veya Sed ile vb...19 farkli dosyada bulunan 3. Virgule kadar olan soldan sağa doğru bütün karakterleri yeni bir dosyaya nasıl yazabilirim? İstenirse resim paylaşabilirim.

Desteğiniz için teşekkürler.
Mesaj otomatik birleştirildi:

cut -d ',' -f1,2,3,4 1.csv komutu ile çözdüm...
 
Son düzenleme:

mdkbet

Profesör
Katılım
13 Kasım 2006
Mesajlar
2,607
Reaksiyon puanı
89
Puanları
228
Dosya.txt isimli dosyaya içinde virgül olan rastgele harfler yazdım
içeriği aşağıda gibi

[root@rhmgmt ~]# cat dosya.txt
sdfasdf,asdf,asfasdf,sfafsdf,asdfasf,
fsdf,sdsf,ssaas,ge,e,e,aasdfas,
aasdfcw,ascasc,asdafgr,grerga,

Sonra awk ile ayracı virgül olacak şekilde ayarladım ("-F," bu işi yapıyor) ve ayraçlar arasında kalan ilk üç karakter grubunu yazdırdım
Bu komutun sonuna "> yenidosya.txt" yazılmazsa direkt olarak ekrana basar

[root@rhmgmt ~]# awk -F, '{ print $1,$2,$3 }' dosya.txt > yenidosya.txt

Yeni dosyanın içeriği aşağıdaki gibi oldu

[root@rhmgmt ~]# cat yenidosya.txt
sdfasdf asdf asfasdf
fsdf sdsf ssaas
aasdfcw ascasc asdafgr
[root@rhmgmt ~]#


$1,$2,$3 şeklinde değilde $1 $2 $3 şeklinde yazarsan aralarına boşluk koymadan yenidosya.txt içine kaydeder

eğer dosyaların yeri belli değilse aşağıdaki şekilde de yapılabilir

[root@rhmgmt ~]# **** . -type f -name "*.txt" | xargs awk -F, '{ print $1,$2,$3 }' > yenidosya.txt

yukarıdaki komut içinde bulunduğun dizinden aşağıya doğru uzantısı txt olan tüm dosyları tarar ve 3. virgüle kadar olan karakterleri yenidosya.txt dosyasına yazar.

Ekstra bilgi:
awk doğası gereği seperatör bulamazsa tüm dosyayı yazdırır.
Yani bizim durumumuzda dosyanın içinde hiç virgül yoksa komutu aşağıdaki gibi düzenlemek gerekir

awk -F, 'NF>1 { print $1 $2 $3 }' dosya.txt > yenidosya.txt
 

freestaff

Öğrenci
Katılım
15 Eylül 2015
Mesajlar
12
Reaksiyon puanı
1
Puanları
3
Şimdi başka bir problemim var zorlanıyorum..

19 farklı dosyadan ilk 5 kolonu boşlukları virgüle çevirerek ve her taramada oluşturulan tek dosyanın en son satırına 19 dosyadaki eklenen satırları çıktı olarak almak..

Sizce mümkünmü?
Mesaj otomatik birleştirildi:

Dosya.txt isimli dosyaya içinde virgül olan rastgele harfler yazdım
içeriği aşağıda gibi

[root@rhmgmt ~]# cat dosya.txt
sdfasdf,asdf,asfasdf,sfafsdf,asdfasf,
fsdf,sdsf,ssaas,ge,e,e,aasdfas,
aasdfcw,ascasc,asdafgr,grerga,

Sonra awk ile ayracı virgül olacak şekilde ayarladım ("-F," bu işi yapıyor) ve ayraçlar arasında kalan ilk üç karakter grubunu yazdırdım
Bu komutun sonuna "> yenidosya.txt" yazılmazsa direkt olarak ekrana basar

[root@rhmgmt ~]# awk -F, '{ print $1,$2,$3 }' dosya.txt > yenidosya.txt

Yeni dosyanın içeriği aşağıdaki gibi oldu

[root@rhmgmt ~]# cat yenidosya.txt
sdfasdf asdf asfasdf
fsdf sdsf ssaas
aasdfcw ascasc asdafgr
[root@rhmgmt ~]#


$1,$2,$3 şeklinde değilde $1 $2 $3 şeklinde yazarsan aralarına boşluk koymadan yenidosya.txt içine kaydeder

eğer dosyaların yeri belli değilse aşağıdaki şekilde de yapılabilir

[root@rhmgmt ~]# **** . -type f -name "*.txt" | xargs awk -F, '{ print $1,$2,$3 }' > yenidosya.txt

yukarıdaki komut içinde bulunduğun dizinden aşağıya doğru uzantısı txt olan tüm dosyları tarar ve 3. virgüle kadar olan karakterleri yenidosya.txt dosyasına yazar.

Ekstra bilgi:
awk doğası gereği seperatör bulamazsa tüm dosyayı yazdırır.
Yani bizim durumumuzda dosyanın içinde hiç virgül yoksa komutu aşağıdaki gibi düzenlemek gerekir

awk -F, 'NF>1 { print $1 $2 $3 }' dosya.txt > yenidosya.txt

Tam cevabı yazarken gördüm....... bunları iyice sindirip yeni sormuş olduğum soruyu çözmeye çalışacağım.. eğer çözemez isem sizden yardım talep edebilirsem memnun olurum...

Elinize sağlık..
 

mdkbet

Profesör
Katılım
13 Kasım 2006
Mesajlar
2,607
Reaksiyon puanı
89
Puanları
228
awk '{FS=" "; OFS=","} {print $1,$2,$3,$4,$5}' dosya.txt >> yenidosya.txt

soruyu doğru anladıysam bu şekilde yapabilirsin
Mesaj otomatik birleştirildi:

dosyaların içeriğini de paylaşayım daha anlamlı olur

[root@rhmgmt ~]# cat dosya.txt
sdfasd fasdf asfasdf sfafsdf asdfasf sdffdf sgsgss
fsdf sdsf ssaas ge e e aasdfas sdfsdf gsgsg sdsd
aasdfcw ascasc asdafgr grerga gyyhyhy gsgs cs




[root@rhmgmt ~]# cat yenidosya.txt
sdfasd,fasdf,asfasdf,sfafsdf,asdfasf
fsdf,sdsf,ssaas,ge,e
aasdfcw,ascasc,asdafgr,grerga,gyyhyhy
sdfasd,fasdf,asfasdf,sfafsdf,asdfasf
fsdf,sdsf,ssaas,ge,e
aasdfcw,ascasc,asdafgr,grerga,gyyhyhy
sdfasd,fasdf,asfasdf,sfafsdf,asdfasf
fsdf,sdsf,ssaas,ge,e
aasdfcw,ascasc,asdafgr,grerga,gyyhyhy
[root@rhmgmt ~]#


ilk komutu her çalıştırdığında yenidosya.txt e bir kayıt ekler
 

freestaff

Öğrenci
Katılım
15 Eylül 2015
Mesajlar
12
Reaksiyon puanı
1
Puanları
3
Şu anda okadar büyük bir sorunumu çözdünüz ki katkınız için size teşekkür etmek basit kalıyor.....
Elinize sağlık...
 
Üst