day3=参考答案=~ps.不是唯一答案哦
假设文本名字叫做1.txt,并且文本行数大于10,脚本如下
1 #!/bin/bash 2 3 ##先获取该文本的行数 4 5 nu=`wc -l 1.txt |awk ‘{print $1}’` 6 7 ##对前5行进程处理 8 9 for i in `seq 1 5` 10 11 do 12 13 ##使用sed把每一行的内容赋值给变量 14 15 l=`sed -n “$i”p 1.txt` 16 17 ##用grep 判定是否匹配字母,-v取反,-q不输出内容 18 19 if echo $l |grep -vq ‘[a-zA-Z]’ 20 21 then 22 23 echo $l 24 25 fi 26 27 done 28 29 ##对6-10行做删除字母处理 30 31 for i in `seq 6 10` 32 33 do 34 35 l=`sed -n “$i”p 1.txt` 36 37 echo $l|sed ‘s/[a-zA-Z]//g’ 38 39 done 40 41 ##剩余的直接输出 42 43 for i in `seq 11 $nu` 44 45 do 46 47 sed -n “$i”p 1.txt 48 49 done
##若想把更改内容写入到1.txt,还需要把以上内容重定向到一个文本中,然后删除1.txt,再把刚刚重定向的文件更名为1.txt