最近因?yàn)橐獙⒍嗾Z言文件整理成表格形式與安卓對齊,想到多達(dá)十幾種語言,一種語言涉及到幾百行绿店,這如果要人工整理得整理到啥時(shí)候,就想到做一個(gè)shell腳本來解決這個(gè)問題庐橙。
因?yàn)樵趍ac不能直接支持excel假勿,所以用csv文件來代替,用時(shí)將csv轉(zhuǎn)成excel即可态鳖。
csv事實(shí)上是由為逗號隔開的一行行字符串組成
如:
theme,Theme
share,Share
feedback,Feedback
rate,Rate
about,About
搞清楚原理转培,開始擼代碼:
假設(shè)string文件格式為: key = "value";
先將" = "做一個(gè)字符替換,以免等會進(jìn)行字符分割時(shí)有擾亂
替換 = 為$
srcText=" = "
destText="$"
sed -i "" "s/${srcText}/${destText}/g" temp.strings
去掉每行末尾的分號浆竭;
srcText=";"
destText=""
sed -i "" "s/${srcText}/${destText}/g" temp.strings
去掉引號
srcText="\""
destText=""
sed -i "" "s/${srcText}/${destText}/g" temp.strings
考慮到字符中有空格和逗號影響分割的精確度浸须,均進(jìn)行替換
#替換空格
srcText=" "
destText="~"
sed -i "" "s/${srcText}/${destText}/g" temp.strings
替換逗號
srcText=","
destText="^"
sed -i "" "s/${srcText}/${destText}/g" temp.strings
然后逐行讀取string文件,用分割出key和value邦泄,不包含的就認(rèn)定為注釋項(xiàng)删窒,組合成key,value的形式放入數(shù)組中
#逐行讀取
arr=()
flag=0
while read LINE
do
str=$LINE
res=""
#如果包含$
if [[ $str == *"$"* ]]
then
key=`echo $str | cut -d "$" -f 1`
value=`echo $str | cut -d "$" -f 2`
res="${key},${value}"
else
if [[ $str == *"http://"* ]]
then
pre="${str#*//}"
res="${pre},"
fi
fi
echo $res
arr[flag]=$res
最后再逐行寫入文件,恢復(fù)替換掉的字符
for line in ${arr[@]}; do
echo $line >> reslut.csv
done
#恢復(fù)空格
srcText='~'
destText=' '
sed -i "" "s/${srcText}/${destText}/g" reslut.csv
#恢復(fù)逗號
srcText='^'
destText=','
sed -i "" "s/${srcText}/${destText}/g" reslut.csv
效果圖:
屏幕快照 2018-07-05 下午3.01.40.png
屏幕快照 2018-07-05 下午3.02.36.png
如果想要將csv轉(zhuǎn)化成string文件顺囊,步驟倒過來即可
shell腳本下載地址: https://github.com/taozaizai/string2csvANDcsv2string.git
如果轉(zhuǎn)化中文或者其他的語言時(shí)出現(xiàn)亂碼肌索,請用mac自帶的numbers打開。