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等是对于数字比较的,不用于字符串比较。应该直接使用等于号去表示 。

鉴于水平有限,可能存在错误,希望不吝指出

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值