如何在awk中扩展字符串
我需要在如何在awk中扩展字符串,awk,Awk,我需要在awk中的字符串末尾添加破折号(-)。破折号的数量是动态的(可以是0到1024之间的任何数字),因此不能硬编码。如何在awk中实现它 在中,可以这样实现: function gen_chars(N) { s=""; for (i=1;i<=N; i++) {s = s "-"}; return s; } 函数gen_chars(N){s=”“;for(i=1;i使用所需的字符创建一个长焊盘,并切割所需的长度,例如 awk -v size=5 'BEGIN {s="-"; for(
awk
中的字符串末尾添加破折号(-
)。破折号的数量是动态的(可以是0到1024之间的任何数字),因此不能硬编码。如何在awk中实现它
在中,可以这样实现:
function gen_chars(N) { s=""; for (i=1;i<=N; i++) {s = s "-"}; return s; }
函数gen_chars(N){s=”“;for(i=1;i使用所需的字符创建一个长焊盘,并切割所需的长度,例如
awk -v size=5 'BEGIN {s="-"; for(i=1;i<=10;i++) s=s s;
print "string" substr(s,1,size)}'
awk-v size=5'开始{s=“-”,对于(i=1;i这是gnu awk的一个替代方案:
$ cat file5
home
help
$ awk -vnd="15" '{$(NF+1)=sprintf("%*s",nd,"-");gsub(/[ ]/,"-",$NF)}1' file5 #nd=number of dashes
home ---------------
help ---------------
另一种选择是使用最大破折号(即1024)的文本/var,并使用printf限制最大宽度:
$ md=$(printf '%.s-' {1..1024}) #md=max dashes = 1024
$ awk -vmd=$md -vnd="15" '{printf "%s%.*s\n",$0,nd,md}' file5 #nd=size of dashes
home---------------
help---------------
对于gensub(),使用GNU awk:
对于其他AWK:
function gen_chars(n, s) { s=sprintf("%*s",n,""); gsub(/ /,"-",s); return s }
输入文本和预期输出在哪里?如何确定要添加的破折号数?
function gen_chars(n, s) { s=sprintf("%*s",n,""); gsub(/ /,"-",s); return s }