Bash 使每行文件字符长度为500
我们需要更改一个文件,使每行正好有500个字符。这意味着我应该计算当前行长度,并以某种方式添加空字节或空格?每行正好是500字节。 这些文件通常有3行,因此文件的总大小应该在1500字节左右 当我在测试文件上使用awk计算行长度时,我得到了几个可变行长度: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 我的问题很明显是如何将剩余
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…您好,谢谢,我忘了添加系统正在运行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进行“就地”替换吗?