一、需求背景
需要处理的文本格式如下:
'yu'zhong'hua'yuan
'yue'jin'lu'kou
'zhong'shi'hua'huan'bei'lu
需要处理生成首字母缩写的格式:
yzhy
yjlk
zshhbl
二、技术思路
从需要处理的文本格式来看,首字母都是位于单引号之后的第一个字符。如果将需要处理的字符串看做一个字符数组来处理的话,就很容易处理了---只需一个for循环来遍历字符串,判断当前字符是不是单引号,若是,则打印下一个字符。用C语言来表示就是:
for(i=0;i<len;i++){
if (str[i]=='''){
printf("%c",str[i+1]);
i++;
}
printf("\n")
}
但是shell脚本如何像处理字符数组一样的处理字符串呢?
三、脚本代码
while read line
do
#指定awk分隔符为"",则awk会将字符串的每个字符都就视为一个独立的元素
echo ${line} | awk -F "" '{
for (i=1;i<NF;i++){
#注意这里展示了awk中如何引用单引号
if ($i=="'\''"){
printf("%s",$(i+1))
i++
}
}
printf("\n")
}'
done < ${file}