BASH'da 'cut' ile 'cut' sınırlayıcı nasıl tanımlanır?


Yanıtlar:


301

İki yol:

Ctrl+ VVe sonra tuşlarına basın Tab.

cut -f2 -d'   ' infile

veya şöyle yaz:

cut -f2 -d$'\t' infile

10
$ '' - bash'ism, AFAIR
poige

8
Açıkçası Windows'ta da (örneğin Git Bash) çalışmaz. @ Mikel'in cevabını orada kullanın (varsayılan sınırlayıcı sekmedir, -dargümanı atlayın ).
Ahmed Fasih


4
@poige, bu geliyor ksh93, değil bash. Bu en azından ksh93, zsh, bash, mksh ve FreeBSD sh tarafından desteklenir ( bunun için POSIX standart şartnamesinin bir sonraki ana tersinesh çevrilebilir ).
Stéphane Chazelas 23:17


191

Sekme varsayılandır.

Bkz kesim adam sayfasını .

-d delim
         Use delim as the field delimiter character instead of the tab
         character.

Yani sadece yazmalısın

cut -f 2

2
Oops bu çizgiyi görmedi.
Muhammad Hasan Khan

4
Ancak, hem okunabilirlik hem de taşınabilirlik için bu tür bayrakların açıkça belirtilmesi her zaman daha güvenlidir. Bazı insanlar cutiçin bir Windows tasarladığını tam standart takip etmeyeceğini hayal edebiliyorum .
Willem Van Onsem

3
Cevap kabul edilmelidir: en basit kod, en basit açıklama. ya çivilenmiş: youtube.com/watch?v=dpNTHl7y45Y
neuronet 16:16

5
Bu cevap hayatımı değiştirdi
matheeeny

1
@WillemVanOnsem, birisi cutWindows için bir sürüm yazarsa ve bunun için POSIX şartnamesine uymuyorsa , herhangi bir POSIX betiğinin bu sistemle çalışacağını varsaymak için hiçbir neden yoktur . POSIX tarafından belirtilen özelliklere bağlı kalın. Varsayımsal geleceğe uygun olmayan uygulamalara izin vermeye çalışmayın; “taşınabilirliğin” anlamı bu değil.
Joker

12
awk -F '\t' '{ print $2 }' inputfile

Bu, her girdi satırının ikinci sekmeyle ayrılmış alanını ayıklar inputfile.


10

Daha genel olarak, görünmez herhangi bir karakter gerektirmeden: trSınırlayıcıları daha kolay belirtilebilecek bir biçime dönüştürmek için kullanın cut.

$ echo -e "a\tb\tc" |tr '\t' ' ' |cut -d' ' -f2
b

tr basit ama güçlü, karakter eşleştirme ve değiştirme aracıdır.


1
Peki ya girdi ise abc(space)def(tab)ghi? Cevabınız verecektir def, ancak vermelidir ghi. Benzer şekilde, eğer girdiyseniz, ABC(tab)DEF(space)GHIcevabınız cevap verecektir DEF, fakat cevap vermelidir DEF(space)GHI.
G-Man

@ G-Man: Uzay sınırlayıcı sadece bir örnek oldu. Verileriniz için uygun olan sınırlayıcıyı kullanın - örneğin virgül. echo -e "abc\tdef ghi" |tr '\t' ',' |cut -d',' -f2
nobar

... Ama, evet, sınırlayıcı bir sekme olmalıysa, yaklaşımım işe yaramaz.
nobar
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.