【问题标题】:cat file with no line wrap没有换行的cat文件
【发布时间】:2009-10-23 23:20:14
【问题描述】:

在 *nix 中,我如何显示(cat)一个没有换行的文件:较长的行应该被剪掉以适应屏幕的宽度。

【问题讨论】:

    标签: linux unix shell


    【解决方案1】:

    您可能正在寻找fmt:

    fmt file
    

    这会非常激进地重新格式化您的文本,因此它可能会比您想要的更多。

    或者,cut 命令可以将文本剪切到特定的列宽,丢弃超出右边距的文本:

    cat file | cut -c1-80
    

    另一个方便的选项是less -S 命令,它在全屏窗口中显示文件,长行左右滚动:

    less -S file
    

    【讨论】:

    • 确实,它比我想要的更多:它连接了行。
    • 其实我是用watch "cat file" 看文件的内容,所以不能少用。猫文件 | cut -c1-80 部分起到了作用。有什么办法可以根据屏幕大小调整剪辑?
    • 你可能定义了环境变量$COLUMNS:试试cut -c1-$COLUMNS file
    • 酷。 “less -S”版本非常棒。
    • 您可以在less 运行时使用组合键-S 切换换行
    【解决方案2】:

    在 less 中切换长换行。默认是换行。

    - `less file`
    - in file type `"-S"` to toggle to truncate on line width
    - to toggle back `"-S"` again.
    

    【讨论】:

    • 您也可以使用-S 作为选项调用lessless -S file 或将其包含在您的环境中:export LESS="-S"(以及其他选项)。无论哪种情况,如果您愿意,您仍然可以在它运行后使用切换。
    【解决方案3】:

    请注意,cut 接受文件名作为参数。

    这似乎对我有用:

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

    为了测试,我加了一个右边距:

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

    当我调整终端大小时,截断已更新为匹配。

    【讨论】:

    • 当我运行你的脚本 watch ./colscript 时,我看到显示 80。当我通过拖动窗口的边缘(我正在使用 PuTTY)更改宽度时,数字会更改以匹配。你看到了什么?
    • 我什么也没看到,但我明白了原因:不同的 bash 版本。 watch ./colscript 适用于 bash 4.0(我的电脑),但不适用于 bash 3.0(远程计算机)。 ./colscript 不适用于这两个版本中的任何一个。
    • echo $BASH_VERSION 给我“3.2.48(1)-release” 从命令行运行./colscript 会回显空白行的原因是$COLUMNS 仅用于交互式shell。您可以尝试在./colscript 的第一行末尾添加-i,这样您就有了#!/bin/bash -i
    【解决方案4】:

    正如其他人所说,答案是cut -c ...,但要为其添加一些动态,我更喜欢这个:

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

    【讨论】:

    • 这会将输出限制为指定的(但动态的)列长度
    【解决方案5】:

    cut 的使用没有考虑到制表符被视为单个字符\t,但它们被打印为 8 个空格。因此,带有标签的文件将在不同的感知列处被剪切。

    less -S 以最佳方式截断文本,即使存在制表符,但 AFAIK 它不能用于非交互式打印“切碎”文件。

    一个可行的解决方案是通过expand 将制表符转换为空格,然后通过cut 输出: expand < file | cut -c -$(tput cols)

    【讨论】:

    • expand 有很大帮助;谢谢,我只是在努力解决这个问题(使用标签)。很高兴我滚动到底部!
    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 2012-09-04
    • 1970-01-01
    相关资源
    最近更新 更多