有一段代码可以让你在纯 awk 中对行进行排序,而长度相同的行不会互相擦除,而会一个接一个地显示:
{
c = length
m[c] = m[c] ? m[c] RS $0 : $0
}
END {
for (c in m) print m[c]
}
我理解m
字符串输入到数组中,其中元素的索引是字符串的长度,元素的内容是字符串本身。但是这条线起什么作用呢m[c] = m[c] ? m[c] RS $0 : $0
?如果将相同的字符串(或另一个具有相同长度的字符串?)分配给某个元素,则数组元素就是字符串分隔符,即整个字符串,否则就是整个字符串?它到底是什么?它是如何工作的?
我下载了教科书,上面写着
条件表达式运算符。
条件表达式的形式为:
expr 1 ? expr2 : expr 3
首先,对 expr1 进行求值。如果为真,即非零或非空,则条件表达式的值为 expr 2 的值;否则,它就是 expr 3 的值。仅对 expr 2 和 expr3 中的一个进行求值。
評價這是計算嗎?这里计算/比较什么?赋值操作是m[c] = m[c]
一种计算吗?她算计什么?这可以用 if-then-else 结构代替吗?它是如何工作的m[c] RS $0
?它计算什么?我的评分不够,无法向作者询问,而且他也不太可能回答这样一个长期存在的问题。