用shell打印下面这句话中字母数小于6的单词。
Bash also interprets a number of multi-character options.
核心要点
1)对于循环遍历所有单词
2)wc -L
wc -c
获取字符串长度 ,但是wc-c
获得的个数比实际多1 因为包含了结束符$
代码内容
1 |
|
或者在awk中print中不能使用shell变量 可以使用 -v 指定变量为shell变量 例如 awk -F '[ +.-]' -v j=$i '{print $j}'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
line="Bash also interprets a number of multi-character options."
#n变量是句子中总单词的个数+1
n=$(echo $line|awk -F '[ +.-]' '{print NF}')
for ((i=1;i<$n;i++));do
#word变量是单个单词 word_n变量是每个单词的个数
word=$(echo $line|awk -F '[ +.-]' -v j=$i '{print $j}')
word_n=$(echo $word|wc -L)
if [ $word_n -lt 6 ];then
echo $word
fi
done