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 может сделать это?

3 ответа3

79

О боже, я совсем забыл про cut !

grep -nr sumthin * | cut -c -80

^ делает трюк! > _ <

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 не вырезать оставшийся текст, но выводит его на следующей строке.

1

Хотя это не совсем то, что вы хотите сделать, вы можете использовать awk для печати определенного количества столбцов. В этом случае вы можете указать разделитель как ":".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .