Linux 无换行的cat文件
在*nix中,如何显示(cat)没有换行的文件:应剪切较长的行,使其适合屏幕宽度。您可能正在查找: 这会非常积极地重新格式化您的文本,因此它可能比您想要的做得更多 或者,Linux 无换行的cat文件,linux,unix,shell,Linux,Unix,Shell,在*nix中,如何显示(cat)没有换行的文件:应剪切较长的行,使其适合屏幕宽度。您可能正在查找: 这会非常积极地重新格式化您的文本,因此它可能比您想要的做得更多 或者,cut命令可以将文本剪切到特定的列宽,丢弃右边距以外的文本: cat file | cut -c1-80 watch 'bash -c "cut -c -$(($COLUMNS-10)) file"' 另一个方便的选项是less-S命令,它在全屏窗口中显示一个文件,左/右滚动显示长行: less -S file 请注意,c
cut
命令可以将文本剪切到特定的列宽,丢弃右边距以外的文本:
cat file | cut -c1-80
watch 'bash -c "cut -c -$(($COLUMNS-10)) file"'
另一个方便的选项是less-S
命令,它在全屏窗口中显示一个文件,左/右滚动显示长行:
less -S file
请注意,
cut
接受文件名作为参数
这似乎对我有用:
watch 'bash -c "cut -c -$COLUMNS file"'
为了进行测试,我添加了一个右边距:
cat file | cut -c1-80
watch 'bash -c "cut -c -$(($COLUMNS-10)) file"'
当我调整终端的大小时,截断被更新为匹配。正如其他人所说,答案是
cut-c…
,但为了给它添加一些动态,我更喜欢这样:
cat file.txt | cut-c-$(tput cols)
以较少的时间切换长换行。默认设置为换行
- `less file`
- in file type `"-S"` to toggle to truncate on line width
- to toggle back `"-S"` again.
使用
cut
时,不考虑制表符被视为单个字符\t
,而是将制表符打印为8个空格。因此,带有选项卡的文件将在不同的列上剪切
less-S
以最佳方式截断文本,也可以在有选项卡的情况下截断文本,但这样就不能用于以非交互方式打印“截断”文件
一个有效的解决方案是通过展开
然后剪切
输出将制表符转换为空格:
expand
事实上,它做的比我想要的更多:它连接行。实际上,我正在使用watch“cat file”查看文件的内容,所以我不能少用。cat file | cut-c1-80部分实现了这一目的。有没有办法将剪切调整到屏幕大小?您可以定义环境变量$COLUMNS
试试cut-c1-$COLUMNS file
Cool。“less-S”版本非常棒。在运行less
时,您可以使用组合键-S
切换换行。当我运行您的脚本watch./colscript
时,我看到80显示出来。当我通过拖动窗口的边缘来改变宽度时(我正在使用PuTTY),数字会随之改变。你看到了什么?我什么也没看到,但我找到了原因:不同的bash版本。注意./colscript在bash 4.0(我的计算机)上工作,但在bash 3.0(远程计算机)上不工作/colscript在这两个版本中都不起作用。echo$BASH_VERSION
给了我“3.2.48(1)-release”。从命令行运行/colscript
会回显空行的原因是,$COLUMNS
仅为交互式shell填充。您可以尝试在/colscript
的第一行末尾添加-i
,这样您就有了#/bin/bash-i
扩展
是一个很大的帮助;谢谢,我只是在努力解决这个问题(用标签)。很高兴我滚动到了底部!您还可以使用-S
调用less
,作为选项:less-S文件
或将其包含在您的环境中:export less=“-S”
(加上其他选项)。在这两种情况下,如果您愿意,您仍然可以在切换运行后使用它。