因此,我有一個列出每個密鑰(每行一個)的文件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