awkを使用して同じ長さの文字列を再組み立てする方法

awkを使用して同じ長さの文字列を再組み立てする方法

次のような長い文字列があります。

_ah_
_asn_
_ai_
_errr_
_an_

これに変えたいです。

"_ah_ai_an_",
"_asn_",
"_errr_"

私は試した:

cat file | awk '{ print length, $0 }' | sort -n -s | cut -d" " -f2-

本質的に長さで並べ替えられますが、私がやりたいことは、 ","As区切り文字を使用して同じ行に同じ長さの項目を入れることです。

ベストアンサー1

$ 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_"

おすすめ記事