shell脚本:打印文本中字符数不大于6的单词
题目来源于老男孩空间日志,是一家企业面试题,题目如下:for循环打印下面这句话中字母数不大于6的单词;
I am oldboy teacher welcome to oldboy traning class
方法1:使用数组a,存放文本里的单词;for循环轮询,if判断每一个单词的长度,打印小于等于6的单词;
# cat 1.sh #!/bin/bash #written by mofansheng@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 mofansheng@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
数组的另一种方法:直接读取数组里的元素,判断元素的长度;
} 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判断单词长度,并做判断;
# cat 2.sh #!/bin/bash#written by mofansheng@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
还有更好的方法,欢迎大家共同学习与分享。
阅读更多- shell脚本:打印文本中字符数不大于6的单词
- Shell——expr应用案例:打印下面字符串中字符数不大于6的单词
- 利用shell for循环打印下面这句话中字符数不大于6的单词(面试题)
- shell脚本打印多行文本到文件
- Shell脚本对文件中的行、单词、字符进行迭代输出示例
- shell脚本中打印所有匹配某些关键字符的行或前后各N行
- 使用shell脚本打印9x9乘法表
- shell脚本中字符和文件的判断及字符串入参的注意事项
- C语言程序设计习题1-17 编写一个程序,打印长度大于80个字符的所有输入行
- 有一段文本,将文本中的所有单词,存放到一个字符指针数组中。
- shell读取文本及脚本间的调用
- shell脚本打印日志方法
- Shell脚本编程概述(四):bash内置字符处理工具
- 练习1-17 编写一个程序,打印长度大于80个字符的所有输入行.
- [转]shell脚本打印日志方法
- shell脚本调试打印日志问题
- shell脚本-打印数字
- shell如何统计文本中每种字符的出现次数
- shell脚本:查找文本 与 简单的grep
- shell脚本变量特殊字符的含义