題目:shell腳本:打印文本中字符數不大於6的單詞,是一家企業面試題,題目如下:
for循環打印下面這句話中字母數不大於6的單詞;
I am oldboy teacher welcome to oldboy traning class
方法1:
使用數組a,存放文本裡的單詞;for循環輪詢,if判斷每一個單詞的長度,打印小於等於6的單詞;
[root@localhost anglea]# cat 1.sh
#!/bin/bash
#written by linuxidc@2015-10-28
a=(I am oldboy teacher welcome to oldboy traning class)
for((i=0;i<${#a[*]};i++))
do
if [ ${#a[$i]} -le 6 ]
then
echo ${a[$i]}
fi
done
上面的if判斷還可以使用expr length判斷字符串長度;
[root@localhost anglea]# cat 1.sh
#!/bin/bash#written by linuxidc@2015-10-28
a=(I am oldboy teacher welcome to oldboy traning class)
for((i=0;i<${#a[*]};i++))
do
if [ `expr length ${a[$i]}` -le 6 ]
then
echo ${a[$i]}
fi
done
數組的另一種方法:直接讀取數組裡的元素,判斷元素的長度;
arr=(I am oldboy teacher welcome to oldboy traning class)
for file in ${arr[@]}
do
if [ ${#file} -le 6 ]
then
echo $file
fi
done
執行結果如下:
[root@localhost anglea]# sh 1.sh
I
am
oldboy
to
oldboy
class
方法2:
使用for循環輪詢單詞,使用wc -L判斷單詞長度,並做判斷;
[root@localhost anglea]# cat 2.sh
#!/bin/bash#written by linuxidc@2015-10-28
for f in I am oldboy teacher welcome to oldboy traning class
do
[ `echo $f|wc -L` -le 6 ] && echo $f
done
執行結果如下:
[root@localhost anglea]# sh 2.sh
I
am
oldboy
to
oldboy
class
方法3:awk的length用法
[root@localhost anglea]# echo "I am oldboy teacher welcome to oldboy traning class"|awk '{for(i=1;i<=NF;i++) if(length($i)<=6) print $i}'
I
am
oldboy
to
oldboy
class
還有更好的方法,歡迎大家共同學習與分享。