Bash 使每行文件字符长度为500

Bash 使每行文件字符长度为500,bash,unix,sed,awk,Bash,Unix,Sed,Awk,我们需要更改一个文件,使每行正好有500个字符。这意味着我应该计算当前行长度,并以某种方式添加空字节或空格?每行正好是500字节。 这些文件通常有3行,因此文件的总大小应该在1500字节左右 当我在测试文件上使用awk计算行长度时,我得到了几个可变行长度: awk '{ print length() }' BadFIle.txt 28 250 38 我应该得到这个: awk '{ print length() }' GoodFIle.txt 500 500 500 我的问题很明显是如何将剩余

我们需要更改一个文件,使每行正好有500个字符。这意味着我应该计算当前行长度,并以某种方式添加空字节或空格?每行正好是500字节。 这些文件通常有3行,因此文件的总大小应该在1500字节左右

当我在测试文件上使用awk计算行长度时,我得到了几个可变行长度:

awk '{ print length() }' BadFIle.txt
28
250
38
我应该得到这个:

awk '{ print length() }' GoodFIle.txt
500
500
500
我的问题很明显是如何将剩余字符添加到每行中,以使大小正好为500字节/字符

多谢各位


Mario。

您可以使用awk填充空格:

awk -v n=500 '{ printf "%-*.*s\n", n, n, $0 }' file
否则:

awk -v n=500 '{ printf "%-" n "." n "s\n", $0 }' file
这两个命令都将执行以下操作:

  • 如果大于500且
  • 右边有空格的焊盘的线宽小于500

  • 如果您的一些原始行长度超过500,该怎么办?在我们的情况下,这些行永远不会超过500…您好,谢谢,我忘了添加系统正在运行solaris。。在solaris上执行此操作…@user2653557 solaris只是一个盒子。那个盒子上至少有3个AWK。其中一个awk是旧的、破损的awk(/usr/bin/awk又名oawk),绝对不能使用。上面的内容应该与其他2-nawk和/usr/xpg4/bin/awk一起使用。@anubhava-为什么要在中间加一个“.”来指定两次行长度?我本以为会有一个简单的
    printf“%-*s\n”,n,$0
    ,但也许我遗漏了什么。@EdMorton:我相信
    printf”%-*.*s\n“
    两个字符都可以填充和截断,使宽度正好
    n
    字符和
    printf“%-*s\n”
    只填充,但让
    /code>n
    以比
    n
    更宽的线宽打印。您好,非常感谢你的帮助。。最后一个请求。。是否可以编辑文件而不是将结果显示到标准输出?我知道我可以将输出重定向到一个文件,但是有可能用awk进行“就地”替换吗?