设为首页 加入收藏

TOP

shell脚本:打印文本中字符数不大于6的单词
2015-12-01 14:11:44 来源: 作者: 【 】 浏览:8
Tags:shell 脚本 打印 文本 字符 大于 单词

题目: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?


还有更好的方法,欢迎大家共同学习与分享。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇细说.NET 中的多线程:概念 下一篇shell基础:使用read、命令行脚本..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: