OnWorks Linux ve Windows Çevrimiçi İş İstasyonları

Logo

İş İstasyonları için Çevrimiçi Ücretsiz Barındırma

<Önceki | İçerik | Sonraki>

kesim

The kesim program, bir satırdan metnin bir bölümünü çıkarmak ve çıkarılan bölümü standart çıktıya çıkarmak için kullanılır. Birden çok dosya argümanını veya standart girdiden girdiyi kabul edebilir.

Çıkarılacak satırın bölümünün belirtilmesi biraz gariptir ve aşağıdaki seçenekler kullanılarak belirtilir:


Tablo 20-3: Seçim Seçeneklerini Kes


Seçenek Açıklama

Seçenek Açıklama

-c karakter_listesi tarafından tanımlanan çizginin bir kısmını çıkarın. karakter_listesi. Liste, bir veya daha fazla virgülle ayrılmış sayısal aralıktan oluşabilir.


görüntü

-f alan Listesi tarafından tanımlanan şekilde satırdan bir veya daha fazla alan ayıklayın.

alan Listesi. Liste, virgülle ayrılmış bir veya daha fazla alan veya alan aralığı içerebilir.


görüntü

-d deli_char Ne zaman -f belirtilir, kullanın deli_char alan sınırlayıcı karakter olarak. Varsayılan olarak, alanlar tek bir sekme karakteriyle ayrılmalıdır.


görüntü

--complement Bu kısımlar hariç tüm metin satırını ayıklayın

tarafından belirtilen -c ve / veya -f.


görüntü


Gördüğümüz gibi, yol kesim metinleri ayıklar oldukça esnek değildir. kesim doğrudan insanlar tarafından yazılan metinler yerine, diğer programlar tarafından üretilen dosyalardan metin çıkarmak için en iyi şekilde kullanılır. bizimkilere bir göz atacağız dağıtımlar.txt bizim için iyi bir örnek olacak kadar “temiz” olup olmadığını görmek için dosya kesim örnekler. eğer kullanırsak kedi ile -A seçeneği, dosyanın sekmeyle ayrılmış alan gereksinimlerimizi karşılayıp karşılamadığını görebiliriz:



[ben@linuxbox ~]$ cat -A dağıtımları.txt

SUSE^I10.2^I12/07/2006$

Fedora^I10^I11/25/2008$ SUSE^I11.0^I06/19/2008$

Ubuntu^I8.04^I04/24/2008$ Fedora^I8^I11/08/2007$ SUSE^I10.3^I10/04/2007$

Ubuntu^I6.10^I10/26/2006$ Fedora^I7^I05/31/2007$ Ubuntu^I7.10^I10/18/2007$ Ubuntu^I7.04^I04/19/2007$

[ben@linuxbox ~]$ cat -A dağıtımları.txt

SUSE^I10.2^I12/07/2006$

Fedora^I10^I11/25/2008$ SUSE^I11.0^I06/19/2008$

Ubuntu^I8.04^I04/24/2008$ Fedora^I8^I11/08/2007$ SUSE^I10.3^I10/04/2007$

Ubuntu^I6.10^I10/26/2006$ Fedora^I7^I05/31/2007$ Ubuntu^I7.10^I10/18/2007$ Ubuntu^I7.04^I04/19/2007$


SUSE^I10.1^I05/11/2006$

Fedora^I6^I10/24/2006$ Fedora^I9^I05/13/2008$ Ubuntu^I6.06^I06/01/2006$ Ubuntu^I8.10^I10/30/2008$ Fedora^I5^I03/20/2006$

SUSE^I10.1^I05/11/2006$

Fedora^I6^I10/24/2006$ Fedora^I9^I05/13/2008$ Ubuntu^I6.06^I06/01/2006$ Ubuntu^I8.10^I10/30/2008$ Fedora^I5^I03/20/2006$


Güzel görünüyor. Gömülü boşluk yok, alanlar arasında yalnızca tek sekme karakterleri. Dosya boşluklar yerine sekmeler kullandığından, -f bir alan çıkarma seçeneği:


[ben@linuxbox ~]$ cut -f 3 dağıtımlar.txt

12/07/2006

11/25/2008

06/19/2008

04/24/2008

11/08/2007

10/04/2007

10/26/2006

05/31/2007

10/18/2007

04/19/2007

05/11/2006

10/24/2006

05/13/2008

06/01/2006

10/30/2008

03/20/2006

[ben@linuxbox ~]$ cut -f 3 dağıtımlar.txt

12/07/2006

11/25/2008

06/19/2008

04/24/2008

11/08/2007

10/04/2007

10/26/2006

05/31/2007

10/18/2007

04/19/2007

05/11/2006

10/24/2006

05/13/2008

06/01/2006

10/30/2008

03/20/2006


Çünkü bizim dağıtımlar dosya sekmeyle ayrılmış, kullanmak en iyisidir kesim karakterler yerine alanları çıkarmak için. Bunun nedeni, bir dosya sekmeyle sınırlandırıldığında, her satırın aynı sayıda karakter içermesinin olası olmamasıdır, bu da satır içindeki karakter konumlarını hesaplamayı zorlaştırır veya imkansız hale getirir. Ancak yukarıdaki örneğimizde, neyse ki aynı uzunlukta verileri içeren bir alan çıkardık, böylece her satırdan yılı çıkararak karakter çıkarmanın nasıl çalıştığını gösterebiliriz:



[ben@linuxbox ~]$ cut -f 3 dağıtımlar.txt | kesme -c 7-10

2006

2008

2008

2008

2007

2007

2006

2007

[ben@linuxbox ~]$ cut -f 3 dağıtımlar.txt | kesme -c 7-10

2006

2008

2008

2008

2007

2007

2006

2007


2007

2007

2006

2006

2008

2006

2008

2006

2007

2007

2006

2006

2008

2006

2008

2006


görüntü

Koşarak kesim listemizde ikinci kez, tarih alanımızda yıla karşılık gelen 7 ile 10 arasındaki karakter konumlarını çıkarabiliyoruz. NS 7-10 gösterim, bir aralığın örneğidir. NS kesim man sayfası, aralıkların nasıl belirlenebileceğinin tam bir açıklamasını içerir.


Genişleyen Sekmeler

nen dağıtımlar.txt dosya, alanları çıkarmak için ideal olarak biçimlendirilmiştir. kesim. Ama ya tamamen manipüle edilebilecek bir dosya istersek? kesim alanlar yerine karakterlere göre mi? Bu, dosya içindeki sekme karakterlerini karşılık gelen boşluk sayısıyla değiştirmemizi gerektirir. Neyse ki GNU Coreutils paketi bunun için bir araç içeriyor. Adlandırılmış genişletmek, bu program bir veya daha fazla dosya argümanını veya standart girdiyi kabul eder ve değiştirilmiş metni standart çıktıya verir.

işlemlerimizi yaparsak dağıtımlar.txt ile dosya genişletmek, kullanabiliriz kes -c dosyadan herhangi bir karakter aralığını çıkarmak için. Örneğin, dosyayı genişleterek ve kesim her karakteri yirmi üçüncü konumdan satırın sonuna kadar çıkarmak için:

[ben@linuxbox ~]$ distros.txt dosyasını genişlet | kes -c 23-

Coreutils ayrıca şunları sağlar: genişletmek boşluklar için sekmeleri değiştirmek için program.


Alanlarla çalışırken sekme karakteri yerine farklı bir alan sınırlayıcı belirtmek mümkündür. Burada ilk alanı / Etc / passwd Dosya:


[ben@linuxbox ~]$ cut -d ':' -f 1 /etc/passwd | kafa

kök arka plan programı

[ben@linuxbox ~]$ cut -d ':' -f 1 /etc/passwd | kafa

kök arka plan programı


bin sys senkronizasyon oyunları adam lp posta haberleri

bin sys senkronizasyon oyunları adam lp posta haberleri


Kullanma -d seçeneği, iki nokta üst üste karakterini alan sınırlayıcı olarak belirtebiliriz.


OnWorks'te En İyi OS Bulut Bilişimi: