linux shell編程-逐行處理文本文件

前言

在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。這裡在提取數據的時候要特別注意。

linux shell編程-逐行處理文本文件

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

a=0

while read line

do

echo $line

let a=a+1

done < /tmp/text.txt

echo $a

注意:這裡的a輸出的就是行數了,因為這裡處理的時候沒有經過管道,而是重定向到標準輸入,給read處理,所以這裡的變量a是可以被處理的。


linux shell編程-逐行處理文本文件

使用awk進行處理

利用awk讀取文件中的每行數據,並且可以對每行數據做一些處理,還可以單獨處理每行數據裡的每列數據。

cat /tmp/text.txt | awk '{print $0}' #$0可以輸出整行的數據


總結

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


分享到:


相關文章: