首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列出/usr/share/i18n/locales中的区域设置

列出/usr/share/i18n/locales中的区域设置
EN

Stack Overflow用户
提问于 2021-07-23 02:07:32
回答 2查看 132关注 0票数 0

我想(按字母顺序)列出在/usr/share/i18n/locales中找到的所有区域设置,以及在所有区域设置文件中找到的相应languageterritory文本。如何才能使输出看起来像这样?

代码语言:javascript
复制
en_US - American English, United States
en_GB - British English, United Kingdom

列出所有语言环境名称很容易:

代码语言:javascript
复制
ls /usr/share/i18n/locales/*

但是为了获得更多的信息,我尝试了一个awk命令,但它远远不能满足我的需要:

代码语言:javascript
复制
awk '/language   /||/territory  /{print $2}' /usr/share/i18n/locales/en_US
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-23 02:15:33

所以就像这样:

代码语言:javascript
复制
cd /usr/share/i18n/locales/ 
awk '/language   /{l=$2} /territory  /{print FILENAME " - "l ", " $2}' *

您只需“清除”$1并使用其中包含前导空格的$0即可。

代码语言:javascript
复制
awk '$1 == "language"{$1="";l=$0} $1 == "territory"{$1="";print FILENAME " -" l "," $0}' *
票数 0
EN

Stack Overflow用户

发布于 2021-07-23 07:02:56

使用locale命令列出所有可用区域设置,然后显示请求的详细信息

代码语言:javascript
复制
#!/bin/bash

for l in $(locale -a); do
    read -r tmp1 lan tmp2 terr < <(LC_IDENTIFICATION="$l" locale -c language -c territory | tr '\n' ' ')
    echo "$l - $lan, $terr"
done

一行:

代码语言:javascript
复制
for l in $(locale -a); do read -r tmp1 lan tmp2 terr < <(LC_IDENTIFICATION="$l" locale -c language -c territory | tr '\n' ' '); echo "$l - $lan, $terr"; done

另一个版本:

代码语言:javascript
复制
#!/bin/bash
  
for l in $(locale -a); do
    LC_IDENTIFICATION="$l" locale -c 'language' -c 'territory' | \
    awk -v loc="$l" '{if(NR==2){ a=$0 }else if(NR==4){ print loc " - " a "," $0 }}'
done

结果:

代码语言:javascript
复制
aa_DJ - Afar,Djibouti
aa_DJ.utf8 - Afar,Djibouti
aa_ER - Afar,Eritrea
aa_ER@saaho - Afar,Eritrea
aa_ET - Afar,Ethiopia
af_ZA - Afrikaans,South Africa
af_ZA.utf8 - Afrikaans,South Africa
agr_PE - Aguaruna,Peru
ak_GH - Akan,Ghana
am_ET - Amharic,Ethiopia
....
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68489655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档