因此,我有一个列出每个密钥(每行一个)的文件keys.txt
,例如从文件中的密钥列表中查找文件中缺失的密钥
VIEW_ACCOUNT_NAME_LABEL
VIEW_ACCOUNT_NAME_DESCR
VIEW_ACCOUNT_STREET_LABEL
VIEW_ACCOUNT_CITY_SUBURB_LABEL
VIEW_ACCOUNT_ZIP_POSTCODE_LABEL
VIEW_ACCOUNT_COUNTRY_LABEL
以及各种配套语言文件,对于该键提供值,如en-GB.view.acccount.ini
具有每行一个条目,像这样:
VIEW_ACCOUNT_NAME_LABEL="Name:"
VIEW_ACCOUNT_NAME_DESCR="Name of the account holder."
VIEW_ACCOUNT_STREET_LABEL="Street:"
VIEW_ACCOUNT_CITY_SUBURB_LABEL="City/Suburb:"
VIEW_ACCOUNT_ZIP="Zip Code"
VIEW_ACCOUNT_COUNTRY_LABEL="Country"
注:有许多关键和语言文件,实际文件有更多的条目 - 通常超过1000种语言。
我需要能够找到
- 哪些键的语言文件丢失(例如,
VIEW_ACCOUNT_ZIP_POSTCODE_LABEL
) - 哪些键在语言文件,但不能在密钥文件(通常是过时的密钥如
VIEW_ACCOUNT_ZIP
)
因为我使用grep
与-v
反转匹配选项尝试的第一个要求,但结果不出我所料:
cppl ~ grep -v --file=keys.txt en-GB.view.acccount.ini
VIEW_ACCOUNT_NAME_LABEL="Name:"
VIEW_ACCOUNT_NAME_DESCR="Name of the account holder."
VIEW_ACCOUNT_STREET_LABEL="Street:"
VIEW_ACCOUNT_CITY_SUBURB_LABEL="City/Suburb:"
VIEW_ACCOUNT_ZIP="Zip Code"
cppl ~
我喜欢它。使用'comm'似乎比我想到的方法更适合这个确切的任务。 –
感谢您的回答,但我没有得到相同的结果。如果我正确理解这一点,那么这两个文件都会被排序然后传回给'comm'。语言文件通过cut传递,以便在排序前返回键,所以'comm'有效地比较了两组键。这一切都非常有意义,除了我得到这个: 'cppl〜comm -23 <(sort keys.txt)<(cut -d = -f1 zh-GB.view.acccount.ini | sort) VIEW_ACCOUNT_CITY_SUBURB_LABEL VIEW_ACCOUNT_NAME_DESCR VIEW_ACCOUNT_NAME_LABEL VIEW_ACCOUNT_STREET_LABEL VIEW_ACCOUNT_ZIP_POSTCODE_LABEL' – Craig
你已经在钥匙任何尾随空格的文件?如果是的话,你将不得不删除它们。尝试'comm -23 <(sed's/* // g'keys.txt | sort)<(cut -d = -f1 en-GB.view.acccount.ini | sort)' – dogbane