与此相反的split()是awk什么?想象一下,我有数组包含字符/整数.
我尝试过的:
color = "#FFFF00";
printf("color original: %s\n", color);
split(color, chars, "");
joined = "";
for (i=1; i <= length(chars); i++) {
joined = joined + chars[i];
}
printf("color joined: %s\n", joined);
Run Code Online (Sandbox Code Playgroud)
但输出是:
color original: #FFFF00
color joined: 0
Run Code Online (Sandbox Code Playgroud)
这当然是不正确的.
更新: 很酷,最后得到以下代码(灵感来自答案中的连接功能):
color = "#FFFF00";
printf("color original: %s\n", color);
split(color, chars, "");
joined = "";
for (i=1; i <= length(chars); i++) {
joined = joined "" chars[i];
}
printf("color joined: %s\n", joined);
Run Code Online (Sandbox Code Playgroud)
诀窍是+在加入东西时不使用标志
Ed *_*ton 10
这是一个不依赖于gawk或知道数组长度的解决方案,如果您愿意,可以在每个数组元素之间放置一个分隔符(在本例中为空格)字符串:
color = "#FFFF00"
printf "color original: %s\n", color
split(color, chars, "")
joined = sep = ""
for (i=1; i in chars; i++) {
joined = joined sep chars[i]
sep = " " # populate sep here with whatever string you want between elements
}
printf "color joined: %s\n", joined
Run Code Online (Sandbox Code Playgroud)
我还清理了printf和假冒冒号的错误使用.
小智 6
使用GNU awk 4.1
#!/usr/bin/awk -f
@include "join"
BEGIN {
split("#FFFF00", chars, "")
print join(chars, 1, length(chars), SUBSEP)
}
Run Code Online (Sandbox Code Playgroud)
小智 -3
知道相反的split()是join(),仅仅谷歌搜索就给了我这个页面,其中似乎包含解决方案:http ://www.gnu.org/software/gawk/manual/html_node/Join-Function.html 。它将数组的所有元素连接在一起,并返回相应的字符串。
['f','o','o'] => "foo"
Run Code Online (Sandbox Code Playgroud)
玩得开心
| 归档时间: |
|
| 查看次数: |
12329 次 |
| 最近记录: |