我想(按字母顺序)列出在/usr/share/i18n/locales中找到的所有区域设置,以及在所有区域设置文件中找到的相应language和territory文本。如何才能使输出看起来像这样?
en_US - American English, United States
en_GB - British English, United Kingdom列出所有语言环境名称很容易:
ls /usr/share/i18n/locales/*但是为了获得更多的信息,我尝试了一个awk命令,但它远远不能满足我的需要:
awk '/language /||/territory /{print $2}' /usr/share/i18n/locales/en_US发布于 2021-07-23 02:15:33
所以就像这样:
cd /usr/share/i18n/locales/
awk '/language /{l=$2} /territory /{print FILENAME " - "l ", " $2}' *您只需“清除”$1并使用其中包含前导空格的$0即可。
awk '$1 == "language"{$1="";l=$0} $1 == "territory"{$1="";print FILENAME " -" l "," $0}' *发布于 2021-07-23 07:02:56
使用locale命令列出所有可用区域设置,然后显示请求的详细信息
#!/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一行:
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另一个版本:
#!/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结果:
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
....https://stackoverflow.com/questions/68489655
复制相似问题