【shell一天一练】找出长度小于6的单词

59 阅读1分钟

今日小练题目📢

输入一句英文,找出句子中小于6的单词

优秀作业🤌🏻

#!/bin/bash
#author:xYLiuuuuu
#date:2025-1-4

read -p "请输入一句英文:" str

n=`echo $str|awk -F '[ +-.]' '{print NF}'`

for i in `seq $[$n-1]`
do
        w=`echo $str|awk -F '[ +-.]' -v j=$i '{print $j}'`
        l=`echo $w|wc -L`
        if [ $l -lt 6 ]
        then
                echo "单词 $w 长度小于6"
        fi
done

敲黑板📝

  • awk内置变量

    • NF 读取记录的字段数(列数)
    • NR 读取文件的行数(在某些应用场景中可以当作行号来使用)
    • FNR 也是读取文件的行数,但是和NR 不同的是当读取的文件有两个或两个以上时,NR 读取完一个文件,行数继续增加 而FNR 重新从1开始记录
  • awk -v参数用来定义变量

# 将文件中的每个数字乘以这个变量的值
$ awk -v multiplier = 2 '{print $1*multiplier}' data.txt
  • 回车

    • echo中加入-e参数使用\n回车符号
    • read中使用\x0a代表回车
  • 注意seq $[$n-1]中外面的$符号