Як в Linux обрізати вихід командного рядка?


56

Якщо я grep -nr sumthin *в своєму каталозі вихідного коду, він також виводить дуже довгі рядки з мінімізованих файлів JavaScript або CSS. Я хочу отримати лише перші 80 символів на рядок.

Наприклад, звичайний grepдає мені це:

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.

але я хотів би отримати саме це:

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

Яка команда Linux може це зробити?


"мінімізований"? Що це означає?
CarlF


Дякую. Правильне посилання - це en.wikipedia.org/wiki/Minification_%28programming%29
CarlF

Обидва посилання ведуть до однієї сторінки для мене.
Віктор

Відповіді:


80

OMG, я зовсім забув cut!

grep -nr sumthin * | cut -c -80

^ робить трюк! > _ <


4
Це не спрацьовує, якщо задіяні послідовності виходу або кольори; візьмемо для прикладуgit log --oneline --graph --color=always | cut -c -$COLUMNS
badp

1
Я вважаю, що він не врізається рівно на 80 відображених символів, але він все ще вирішує мою проблему: жоден з рядків не завертається, тому ви все ще бачите лише провідну частину кожного рядка (що важливо в моєму конкретному випадку використання, тому я може бачити <file>:<linenumber>вихід grep -n).
Ніккі Ервін Рамірес

1
Довгі коментарі до фіксації також начебто "ламають" результат вашої вибіркової команди, якщо не усічені. git log --oneline --graph --color=always | moreпокаже графік, перерваний загорнутим текстом. i.imgur.com/X8G7SIV.png
Ніккі Ервін Рамірес

так, саме тому я почав з цього питання починати з :)
badp

5
Якщо мета полягає лише в тому, щоб мати можливість візуально добре бачити речі (а не перенаправляти вихід кудись для використання), тоді less -Sви хочете. -Sє --chop-long-lines. В основному, це вимикає обертання ліній
ентропія

5

Інші, ніж cutви можете використовувати fold(і в деяких випадках fmt).
foldє частиною coreutilsпакету.

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

foldне вирізає текст, що залишився, але виводить його в наступному рядку.


Дякую за це, це може бути корисним у майбутньому. У моєму випадку я дуже хотів вирізати текст, тому file:linenumberпрефікс grepвиводу є суміжним, для легкого сканування на очі.
Ніккі Ервін Рамірес

1

Незважаючи на те, що ви хочете зробити, ви можете використовувати awkдля друку певної кількості стовпців. Ви можете вказати роздільник, який буде ":" в цьому випадку.


Однак немає конкретного роздільника. Я дійсно ріжу вихід на певну довжину, щоб він вписався в 1 рядок у терміналі.
Ніккі Ервін Рамірес

@Nikki тоді вирізати - це те, що ти хочеш. Я впевнений, що ви можете зробити щось розумне з awk, щоб отримати те саме, але насправді, вирізати простіше. ^ _-
Сардатріон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.