如何使用awk重新组合相同长度的字符串

Mah*_*uté 0 bash awk text-processing

我有一长串这样的字符串:

_ah_
_asn_
_ai_
_errr_
_an_
Run Code Online (Sandbox Code Playgroud)

我想把它改成这样

"_ah_ai_an_",
"_asn_",
"_errr_"
Run Code Online (Sandbox Code Playgroud)

我试过了 :

cat file | awk '{ print length, $0 }' | sort -n -s | cut -d" " -f2-
Run Code Online (Sandbox Code Playgroud)

这基本上是按长度排序,但我想要做的是在同一行上使用相同长度的 ","分隔符

Ed *_*ton 6

$ cat tst.awk
{
    lgth = length($0)
    sub(/_$/,"",strs[lgth])
    strs[lgth] = strs[lgth] $0
}
END {
    for (lgth in strs) {
        printf "%s\"%s\"", sep, strs[lgth]
        sep = "," ORS
    }
    print ""
}

$ awk -f tst.awk file
"_ah_ai_an_",
"_asn_",
"_errr_"
Run Code Online (Sandbox Code Playgroud)