shell脚本逐行读取文本内容并拆分,根据条件筛选写入不同文件

编写如下shell脚本

创建名为Organizer的shell脚本用以整理学生数据:假设有一名为Students的文本文件存放学生基本信息,每一行的格式为:“姓名;专业;省份”,该脚本能够将学生信息依据省份导入北方和南方个两个不同的文件(华北、东北、西北地区为北方,其余为南方),文件名分别是NorthStudents和SouthStudents,如果省份信息存在错误则放入另一个文件ErrStudentsInfo,内容保持不变。

#!/bin/bash
function find(){
cat Students.txt |while read line
do
#	echo "$line"
#拆分字符串到数组
str=$line
OLD_IFS="$IFS"
IFS=";"
arr=($str)
IFS="$OLD_IFS"

#为自定义变量赋值
PARAM=${arr[2]}
case $PARAM in
	"山东"| "山西"| "陕西"| "河北"| "河南"| "甘肃"| "宁夏"| "青海"| "西藏"| "新疆"| "内蒙古"| "辽宁"| "吉林"| "黑龙江"| "北京"| "天津")
	echo "$line">>$NorthStudents
	;;
	"江苏"| "安徽"| "湖南"| "湖北"| "四川"| "云南"| "贵州"| "广东"| "广西"| "福建"| "江西"| "浙江"| "台湾"| "海南"| "上海"| "香港"| "澳门")
	echo "$line">>$SouthStudents
	;;
	*)
	echo "$line">>$ErrStudentsInfo
esac

done
}


find

本次操作最为重要的是把每一行其中得省份信息读取出来即

#拆分字符串到数组
str=$line
OLD_IFS="$IFS"
IFS=";"
arr=($str)
IFS="$OLD_IFS"

#为自定义变量赋值
PARAM=${arr[2]}

姓名;专业;省份
根据其中的分号把一行信息划分为3个字符串存入数组当中,再把其中得省份信息读取出来进行判断。

你可能感兴趣的:(linux)