一、需求背景
需要處理的文本格式如下:
'yu'zhong'hua'yuan
'yue'jin'lu'kou
'zhong'shi'hua'huan'bei'lu
需要處理生成首字母縮寫的格式:
yzhy
yjlk
zshhbl
二荷愕、技術(shù)思路
從需要處理的文本格式來看帅容,首字母都是位于單引號之后的第一個字符。如果將需要處理的字符串看做一個字符數(shù)組來處理的話银伟,就很容易處理了---只需一個for循環(huán)來遍歷字符串你虹,判斷當(dāng)前字符是不是單引號,若是彤避,則打印下一個字符傅物。用C語言來表示就是:
for(i=0;i<len;i++){
if (str[i]=='''){
printf("%c",str[i+1]);
i++;
}
printf("\n")
}
但是shell腳本如何像處理字符數(shù)組一樣的處理字符串呢?
三、腳本代碼
while read line
do
#指定awk分隔符為"",則awk會將字符串的每個字符都就視為一個獨(dú)立的元素
echo ${line} | awk -F "" '{
for (i=1;i<NF;i++){
#注意這里展示了awk中如何引用單引號
if ($i=="'\''"){
printf("%s",$(i+1))
i++
}
}
printf("\n")
}'
done < ${file}