前言
在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 < /tmp/text.txt
echo $a
注意:這裡的a輸出的就是行數了,因為這裡處理的時候沒有經過管道,而是重定向到標準輸入,給read處理,所以這裡的變量a是可以被處理的。
使用awk進行處理
利用awk讀取文件中的每行數據,並且可以對每行數據做一些處理,還可以單獨處理每行數據裡的每列數據。
cat /tmp/text.txt | awk '{print $0}' #$0可以輸出整行的數據
總結
shell雖然方便,但是一旦出現bug,不好查找。
閱讀更多 linux運維菜 的文章