linux shell按行读取 awk解析文件内容

在shell脚本的当前目录下面,存在一个result.txt文件。文件内容存放了格式如下。

nihao false 1541410872156
kankan false 1541410872163

根据空格区分,第一个是服务名称,第二个是服务运行状态,第三个是时间戳。
每一行代表一个服务运行状态。

首先第一步,shell按行读取文件内容

cat result.txt | while read line
do
	#命令行内容
	echo $line
done

第二步,根据行的内容使用awk进行分割然后处理。

cat result.txt | while read line
do
	#命令行内容
	project_name=$(echo $line | awk '{print $1}');
	result=$( echo $line | awk '{print $2}');
	time=$( echo $line | awk '{print $3}');
	if [ "$result" == "false" ]; then
		echo "业务成功"
		echo $result $project_name $time
	else
		echo "业务失败"
		echo $result $project_name $time	
	fi
done

需要注意的是:

  • result=$( echo $line | awk ‘{print $2}’) 将输出的内容转为变量,输出内容加圆括号

  • project_name=$(echo $line | awk ‘{print $1}’) 这一条命令行中,那个赋值=左右不能有空格

  • if [ “$result” == “false” ]; 中括号的判断条件与中括号之间要有空格,中括号后要有分号结尾

  • if条件内判断字符串是否相等不能使用 if [ “$result” eq “false” ]; eq, lt等是对于数字比较的,不用于字符串比较。应该直接使用等于号去表示 。

鉴于水平有限,可能存在错误,希望不吝指出 email: [email protected]

猜你喜欢

转载自blog.csdn.net/Hello_Ray/article/details/83786776