
我有一長串這樣的字串:
_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_"
答案2
這給出了您想要的輸出:
awk -F_ '
{strr[length] = strr[length]"_"$2}
length > max {max=length}
END {
for (i=1;i<max;i++) {if (strr[i]) print "\"" strr[i]"_\","}
print "\"" strr[max]"_\""
}' file
有長度的行i
附加strr[i]
一個前導_
。最後,我們只是循環遍歷現有strr
元素並用 輸出它們"<element>_",
,除了最後一個元素,它得到 no ,
。