如何对 awk 的输出进行排序,而忽略某个字符?

如何对 awk 的输出进行排序,而忽略某个字符?

我正在尝试打印出笔记本电脑中的中文字体,并根据其名称对输出进行排序,以便在 中引用LaTeX。这可以使用以下命令完成:

fc-list :lang=zh-cn | awk -F": " '{$1=""; print}' | sort

它找到字体列表,然后在第一次出现后找到:一个空格,这是字体名称出现的位置。然后我们当然会对其进行排序。

但问题是,有些字体名为.PingFang SC,它被排在最前面,与其他字体不太一致。有没有办法不考虑句点进行排序?

删除句点可能不是一个好的选择,这会改变字体的实际名称,从而使引用变得困难。

答案1

尝试使用sort -d (“字典顺序”,它似乎忽略了非字母字符):

$ printf "Orange\n.PingFang\nRed\n" | sort
.PingFang
Orange
Red

$ printf "Orange\n.PingFang\nRed\n" | sort -d
Orange
.PingFang
Red

相关内容