列出语言环境而不重复

List the locale without making duplicates

我想列出文件 /etc/locale.gen 中的所有语言环境名称,不要重复。我真的不知道该怎么做。

我已经开始像这样删除文件的顶部:

sed -n -e '/aa_DJ/,$p' /etc/locale.gen

它打印了我所有的行。我想要这样的输出:

[...]
fr_FR
en_US
en_GB
[...]
例如,

没有 # 并且没有 fr_FR 之后的其余部分。在一条命令中。

编辑 1:

我可能用 grep 找到了一些东西:

sed -n -e '/aa_DJ/,$p' /etc/locale.gen | grep {,1}

编辑 2:

这是文件http://pastebin.com/i227sTV2

也许是这样的:

awk -F'[@. ]' '!="#"{sub(/^#/,"");print }' /etc/locale.gen | uniq

(或没有 @ 相同)

应该这样做:

awk -F "[ .@]" '/_|eo|ia/{sub("^# *",""); print }' /etc/locale.gen | sort -u

“[.@]”删除所有 language_country (en_US) 之后的内容。


源 locale.gen 文件是 packaged by debian here(作为您应该拥有的文件示例,运行 上面的命令不需要)。完整的语言环境列表在提取的(来自压缩的 deb 文件)文件 /locales_2.22-5_all/usr/share/i18n/SUPPORTED 中(它包含 281 个唯一的语言环境名称)。

更新:s/gsub/sub/g 应该 运行 在任何 awk 上。