歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

shell腳本:打印文本中字符數不大於6的單詞

題目: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 

還有更好的方法,歡迎大家共同學習與分享。

Copyright © Linux教程網 All Rights Reserved