файл cat без переноса строки - PullRequest
31 голосов
/ 24 октября 2009

В * nix, как мне отобразить (cat) файл без переноса строк: более длинные строки должны быть обрезаны так, чтобы они соответствовали ширине экрана.

Ответы [ 5 ]

41 голосов
/ 24 октября 2009

Возможно, вы ищете fmt:

fmt file

Это довольно агрессивно переформатирует ваш текст, поэтому может сделать больше, чем вы хотите.

В качестве альтернативы команда cut может обрезать текст до определенной ширины столбца, отбрасывая текст за правым полем:

cat file | cut -c1-80

Другой удобной опцией является команда less -S, которая отображает файл в полноэкранном окне с прокруткой влево / вправо для длинных строк:

less -S file
21 голосов
/ 24 октября 2009

Обратите внимание, что cut принимает имя файла в качестве аргумента.

Мне кажется, это работает:

watch 'bash -c "cut -c -$COLUMNS file"'

Для тестирования я добавил правое поле:

watch 'bash -c "cut -c -$(($COLUMNS-10)) file"'

Когда я изменил размер своего терминала, усечение было обновлено, чтобы соответствовать.

6 голосов
/ 05 апреля 2015

как заявили другие, ответ - cut -c ..., но чтобы добавить к этому динамику, я предпочитаю:

cat file.txt |cut -c -$(tput cols)

2 голосов
/ 06 декабря 2016

Использование cut не учитывает, что вкладки считаются одним символом \t, но они печатаются как 8 пробелов. Таким образом, файл с вкладками будет вырезан в разных столбцах.

less -S оптимально обрезает текст, также при наличии вкладок, но AFAIK его нельзя использовать для неинтерактивной печати «рубленого» файла.

Рабочим решением является преобразование вкладок в пробелы через expand, а затем cut вывод: expand < file | cut -c -$(tput cols)

2 голосов
/ 25 января 2016

чтобы переключать длинную строчку в меньшую. По умолчанию используется упаковка.

- `less file`
- in file type `"-S"` to toggle to truncate on line width
- to toggle back `"-S"` again.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...