Çok sayıda satır içeren bir dosyam var ve Linux komutlarıyla her satırın yalnızca ilk sözcüğünü görüntülemek istiyorum.Dosyamdaki linux komutlarını kullanarak her satırın ilk kelimesini nasıl görüntüleyebilirim?
Bunu nasıl yapabilirim?
Çok sayıda satır içeren bir dosyam var ve Linux komutlarıyla her satırın yalnızca ilk sözcüğünü görüntülemek istiyorum.Dosyamdaki linux komutlarını kullanarak her satırın ilk kelimesini nasıl görüntüleyebilirim?
Bunu nasıl yapabilirim?
Dene: Ben cevaplar zaten var bakın
grep -Eo '^[^ ]+' file
Çalıştığınız için teşekkürler – MOHAMED
Sen awk
kullanabilirsiniz:
awk '{print $1}' your_file
Bu işlem "baskı" your_file
ilk sütun ($1
). grep kullanarak bunu
post düzenlenmiş, neden aynı anda iyi olanı verdiğinizde yanlış bir çözüm veriyorsunuz? Bu işe yaramaz bir kediydi: http://partmaps.org/era/unix/award.html#cat –
Sorusunda “kedi” yi belirtti; en azından piped-komutta nasıl kullanacağımı göstereyim diye düşündüm (ama bunun için çok fazla olduğunu söylemiştim = P). – newfurniturey
. Ama aynı zamanda sed ile bunu yapabilirsiniz:
sed 's/ .*//' fileName
coreutils cut
ile bunu deneyin:
cut -d' ' -f1 file
yukarıdaki çözümleri, özel durumda uygun görünüyor. Sorunuzun daha genel bir uygulaması için, kelimelerin genel olarak boşlukla ayrılmış olarak tanımlandığına, ancak özellikle boşluk karakterleri olmayacağına dikkat edin. Dosyanızdaki sütunlar sekmeyle ayrılmış olabilir, hatta sekmelerden ve boşluklardan oluşan bir karışımla ayrılabilir.
Önceki örneklerin tümü, boşlukla ayrılmış sözcükleri bulmak için kullanışlıdır, ancak yalnızca awk örneği, diğer boşluk karakterleri tarafından ayrılan sözcükleri de bulur (ve aslında, bu, çeşitli sed/grep sürümlerinde düzgün bir şekilde yapmak için oldukça zor hale gelir.). Ayrıca, açıkça böylece awk ifadeyi değiştirerek, boş satırları atlamak isteyebilirsiniz: Ayrıca boşluk ile başlayacak boş alanlar, yani hatları olasılığı hakkında endişeleriniz varsa
awk '{if ($1 !="") print $1}' your_file
, daha sonra Daha sağlam bir çözüm sırayla olurdu. Böyle durumlar için tek astar üretmek için yeterli usta Awk değilim, ama hile gibi görünebilir yapar kısa Python komut:
>>> import re
>>> for line in open('your_file'):
... words = re.split(r'\s', line)
... if words and words[0]:
... print words[0]
Aslında perl regex, _grep_ içinde yaygın olarak bulunur ve '' s, kurtarma için uygun bir şekilde gelir: 'grep -Po '^ \ s * \ K \ S +'…' – bobbogo
... veya Windows (üzerinde size GnuWin32 grep varsa):
grep -Eo "^[^ ]+" file
[bir dizede Baskı yalnızca ilk alan] olası yinelenen (http://stackoverflow.com/questions/15024561/printing-only-the-first-field-in-a-string) –
Milyonlarca kez, milyonlarca kez yapılabilir. Bir dahaki sefere aramayı dene. Kapatmak için oylama. –
Eminim yinelenenler var, ama önerilenin iyi bir eşleşme olduğunu düşünmüyorum. –