В * nix, как мне отображать (cat) файл без обертки строк: более длинные строки должны быть вырезаны так, чтобы они вписывались в ширину экрана.
Файл cat без переноса строки
Ответ 1
Обратите внимание, что cut
принимает имя файла в качестве аргумента.
Кажется, это работает для меня:
watch 'bash -c "cut -c -$COLUMNS file"'
Для тестирования я добавил правое поле:
watch 'bash -c "cut -c -$(($COLUMNS-10)) file"'
Когда я изменил размер моего терминала, усечение было обновлено для соответствия.
Ответ 2
Возможно, вы ищете fmt
:
fmt file
Это довольно агрессивно переформатирует текст, чтобы он мог делать больше, чем вы хотите.
В качестве альтернативы команда cut
может вырезать текст до определенной ширины столбца, отбрасывая текст за пределами допустимого поля:
cat file | cut -c1-80
Другим удобным вариантом является команда less -S
, которая отображает файл в полноэкранном окне с прокруткой влево/вправо для длинных строк:
less -S file
Ответ 3
как утверждают другие, ответ cut -c ...
, но для добавления к нему некоторой динамики я предпочитаю это:
cat file.txt |cut -c -$(tput cols)
Ответ 4
чтобы переключить длинную линию на меньшее. Значение по умолчанию - обертка.
- `less file`
- in file type `"-S"` to toggle to truncate on line width
- to toggle back `"-S"` again.
Ответ 5
Использование cut
не учитывает, что вкладки считаются одним символом \t
, но они печатаются как 8 пробелов. Таким образом, файл с вкладками будет разрезан на разных воспринимаемых столбцах.
less -S
обрезает оптимально текст, также при наличии вкладок, но AFAIK его нельзя использовать для неинтерактивной печати "нарезанного" файла.
Рабочее решение - это преобразование вкладок в пробелы через expand
, а затем cut
вывод: expand < file | cut -c -$(tput cols)