首页 > 其他 > 详细

使用while read 循环,一次读取文件一行,直到文件尾部退出循环

时间:2016-03-15 00:56:45      阅读:3015      评论:0      收藏:0      [点我收藏+]

使用while循环一次读取文件的一行,直到文件尾部格式如下:

while read line; do  \\ line 为一个变量,表示读取到一行的字符
    循环体
done < /path/to/somefile


练习:

1、取出当前系统上,默认shell为bash的用户

#!/bin/bash
#
while read line;do
        if [[ `echo $line | cut -d: -f7` =~ bash$ ]];then
                echo $line | cut -d: -f1,7
        fi
done < /etc/passwd

#!/bin/bash
#
while read line;do
    [[ `echo $line | cut -d: -f7` =~ bash$ ]] && echo $line | cut -d: -f1,7
done < /etc/passwd


2、显示所有其ID号为偶数的用户

#!/bin/bash
#
while read line;do
        if [[ $[`echo $line | cut -d: -f3`%2] -eq 0 ]];then
                echo $line | cut -d: -f1,3
        fi
done < /etc/passwd


3、显示/etc/rc.d/rc.sysinit文件中,其总字符个数大于30的行

#!/bin/bash
#
while read line;do
        if [ `echo $line | wc -c` -gt 30 ];then
                echo "`echo $line | wc -c`:$line" 
        fi
done < /etc/rc.d/rc.sysinit


4、显示所有其UID和GID均为偶数的用户;

#!/bin/bash
#
while read line;do
        if [ $[`echo $line | cut -d: -f3`%2] -eq 0  ] && [ $[`echo $line | cut -d: -f4`%2] -eq 0 ];then
                echo $line | cut -d: -f1,3-4
        fi
done < /etc/passwd

#!/bin/bash
#
while read line;do
        userID=`echo $line | cut -d: -f3`
        groupID=`echo $line| cut -d: -f4`
        userName=`echo $line| cut -d: -f1`
[ $[$userID%2] -eq 0 ] && [ $[$groupID%2] -eq 0 ] && echo "$userName : $userID : $groupID"
done < /etc/passwd


5、显示/etc/rc.d/rc.sysinit文件中,其总字符个数大于30且非以“#”开头的行;

#!/bin/bash
#
while read line;do
        if [ `echo $line | wc -c` -gt 30 ] && echo $line | grep "^#" ;then
                echo $line
        fi
done  < /etc/rc.d/rc.sysinit






本文出自 “菜鸟日志” 博客,请务必保留此出处http://zkxfoo.blog.51cto.com/1605971/1750925

使用while read 循环,一次读取文件一行,直到文件尾部退出循环

原文:http://zkxfoo.blog.51cto.com/1605971/1750925

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!