linux shell编程-逐行处理文本文件

前言

在Linux shell编程中,我们经常需要以行为处理单位进行数据处理。

使用while read处理

read命令接收标准输入,或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中。read每次读取一行的数据然后就传递给变量进行处理。

1、利用管道输入到read中

a=0

cat /tmp/text.txt | while read line

do

echo $line

let a=a+1

done

echo $a

注意:这里可以看到a输出的还是0,因为给a加1的操作是在管道之后,变量a不会从管理里面返回,因此a最后输出还是0。这里在提取数据的时候要特别注意。

2、利用重定向输入到read中

a=0

while read line

do

echo $line

let a=a+1

done

echo $a

注意:这里的a输出的就是行数了,因为这里处理的时候没有经过管道,而是重定向到标准输入,给read处理,所以这里的变量a是可以被处理的。

使用awk进行处理

利用awk读取文件中的每行数据,并且可以对每行数据做一些处理,还可以单独处理每行数据里的每列数据。

cat /tmp/text.txt | awk '' #$0可以输出整行的数据

总结

shell虽然方便,但是一旦出现bug,不好查找。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180810A19KRZ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券