Linux'ta komut satırı çıktısını nasıl kısaltabilirim?


56

Ben ise grep -nr sumthin *benim kaynak kod dizininde, aynı zamanda minified JavaScript veya CSS dosyalarından çok uzun satırları kusuyor. Satır başına sadece ilk 80 karakteri almak istiyorum.

Örneğin, bir düzenli grepbana bu verir:

css/style.css:21:   behavior: url("css/iepngfix.htc")
css/style-min.css:4:.arrow1{cursor:pointer;position:absolute;left:5px;bottom:10px;z-index:13;}.arrow2{cursor:pointer;position:absolute;right:5px;bottom:10px;z-index:13;}.calendarModule{z-index:100;}.calendarFooterContainer{height:25px;text-align:center;width:100%!important;z-index:15;position:relative;font-size:15px!important;padding:-2px 0 3px 0;clear:both!important;border-left:1px solid #CCC;border-right:1px  ... etc.

ama bunun yerine sadece bunu almak istiyorum:

css/style.css:21:   behavior: url("css/iepngfix.htc")
css/style-min.css:4:.arrow1{cursor:pointer;position:absolute;left:5px;bottom:

Hangi Linux komutu bunu yapabilir?


"minified"? Bu ne anlama geliyor?
CarlF



Her iki bağlantı da benim için aynı sayfaya yönlendirir.
Victor,

Yanıtlar:


80

OMG, tamamen unuttum cut!

grep -nr sumthin * | cut -c -80

^ hile yapar! > _ <


4
Kaçış dizileri veya renk kodları söz konusu olduğunda işe yaramaz; örnek almakgit log --oneline --graph --color=always | cut -c -$COLUMNS
badp

1
Tamamen 80 tane görüntülenen karakterde kesilmediğini anladım, ancak sorunum hala çözülüyor: satırların hiçbiri sarılmıyor, bu yüzden hala her satırın yalnızca ilk kısmını görüyorsunuz (bu benim özel kullanım durumumda önemli, bu yüzden ben <file>:<linenumber>çıktısını görebilirsiniz grep -n).
Nikki Erwin Ramirez

1
Uzun sözlü yorumlar da kesilmezse, örnek komutunuzun çıktısını "keser". git log --oneline --graph --color=always | morekaydırılan metnin kesildiği grafiği gösterecektir. i.imgur.com/X8G7SIV.png
Nikki Erwin Ramirez

evet, bu yüzden bu sorunun başlaması için
googledim

5
Eğer amaç sadece görsel olarak iyi görebilmeniz için (çıktıyı kullanmak için bir yere yönlendirmemek) less -Sistediğiniz şeydir. -Solduğunu --chop-long-lines. Temel olarak, hat sarma işlemini kapatır
entropi

5

Bunun dışında cutkullanabileceğiniz fold(ve bazı durumlarda fmt). paketin bir
foldparçasıdır coreutils.

$ echo "some very long long long text" | fold -w 5   # fold on 5 chars per line
some 
very 
long 
long 
long 
text

folddeğil kesmek kalan metni, ancak sonraki satırda onu çıkarır.


Bunun için teşekkürler, bu gelecekte faydalı olabilir. Benim durumumda, metni gerçekten kesmek istemiştim, bu nedenle çıktının file:linenumberöneki grepgözle kolayca taramak için bitişik.
Nikki Erwin Ramirez

1

Tam olarak ne yapmak istediğinizi değil, ancak awkbelirli sayıda sütunu yazdırmak için kullanabilirsiniz . Bu durumda sınırlayıcıyı ":" olarak belirleyebilirsiniz.


Ancak belirli bir sınırlayıcı yok. Terminaldeki 1 hatta sığdırmak için çıkışı belli bir uzunlukta kesiyorum.
Nikki Erwin Ramirez

@ Nikki sonra kesmek istediğiniz şeydir. Aynı şeyi elde etmek için awk ile zekice bir şeyler yapabileceğinden eminim ama gerçekten, kesmek daha kolay. ^ _-
Sardathrion
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.