缩短行数,添加“...”省略号

缩短行数,添加“...”省略号

如何切断长度超过一定宽度的线条,并用省略号标记被切断的线条?

只应标记实际缩短的线条,而不应标记原本长度合适的线条。

我想在管道中使用该命令。

答案1

这将截断字符串,截掉另外三个字符,如果长度长于您作为参数提供的值,则添加“...”。

other_programs | \
awk -v len=40 '{ if (length($0) > len) print substr($0, 1, len-3) "..."; else print; }'

答案2

尝试这个:

awk -F '' '{if (NF > 70) {print substr($0, 0, 71)"..."} else print $0}'

如果NF太高,更简单的方法是:

awk '{if (length($0) > 70) {print substr($0, 0, 71)"..."} else print $0}'

或者更短的版本:

awk 'length > 70{$0=substr($0,0,71)"..."}1'

答案3

一些可能性:

  • 使用 sed

    sed -E 's/(.{N})(.{1,})$/\1.../' file
    
  • 使用 perl 稍微优雅一些​​(使用后视)

    perl -pe 's/(?<=.{N}).{1,}$/.../' file
    

其中N是想要用省略号替换的字符数。

答案4

另一个perl解决方案:

perl -ple '$_ = sprintf "%.70s...", $_ if length > 70' file

相关内容