grep命令实例
1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次。
# who | grep -o "^\<[[:alpha:]]*" | uniq
2、取出最后登录到当前系统的用户的相关信息 。
# id `who | tail -1 | grep -o "^\<[[:alpha:]]*"`
3、取出当前系统上被用户当做其默认shell的最多的那个shell 。
# cut -d: -f7 /etc/passwd | uniq -c | sort -n | tail -1 | cut -d' ' -f7
4、将/etc/passd中的第三个字段设置最大的后10个用户的信息全部给为大写保存至/tmp/maxuser.txt文件中 。
[root@localhost ~]# sort -t: -k3 -n /etc/passwd | tail -10 | tr 'a-z' 'A-Z' &> /tmp/maxuser.txt
5、取出当前主机的IP地址 。
# ifconfig | grep -Eo "([1-9]|[1-9][1-9]|1[0-9][0-9]|2[0-5][0-4])\.([0-9]|[1-9][1-9]|1[0-9][0-9]|2[0-5][0-5])\.([0-9]|[1-9][1-9]|1[0-9][0-9]|2[0-5][0-5])\.([1-9]|[1-9][1-9]|1[0-9][0-9]|2[0-5][0-4])[[:space:]]" |grep -v "127.0.0.1"
或者:
# ifconfig | grep "[[:space:]*]\<inet\>" | cut -d' ' -f10 | grep -v "127.0.0.1"
6、列出/etc目录下所有已.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中 。
# find /etc -name "*.conf" | egrep -o "[^/][^/]*$" | tr 'a-z' 'A-Z' > /tmp/etc.test
7、显示/var目录下一级子目录或文件的总数 。
# ls /etc/ | wc -l
8、取出/etc/group第三个字段数值最小的10个组的名字 。
# sort -t: -k3 -n /etc/group | head -10 | cut -d: -f1
9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中 。
# cat /etc/issue /etc/fstab | tee /tmp/etc.test &> /dev/null
10、显示/proc/meminfo文件中以大写或者小写S开头的行,用两种方式 。
[root@localhost home]
# egrep "^[sS]" /proc/meminfo[root@localhost home]
# egrep -i "^s" /proc/meminfo
11、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户 。
[root@localhost home]
# grep -v "/sbin/nologin" /etc/passwd
12、显示/etc/passwd文件中其默认shell为/bin/bash的用户 。
[root@localhost home]# grep "/bin/bash" /etc/passwd
13、找出/etc/passwd文件中的一位或两位数 。
[root@localhost /]# egrep "\<[[:digit:]]{1,2}\>" /etc/passwd
14、显示/boot/grub2/grup.cfg中至少一个空白字符开头的行 。
[root@localhost /]# egrep "^[[:space:]]+[^[:space:]]" /boot/grub2/grub.cfg
15、显示/etc/rc.d/rc.local文件中以#开头,后面跟至少一个空白字符,而后又至少一个非空白字符的行 。
[root@localhost /]# egrep "^#[[:space:]]+[^[:space:]]" /etc/rc.d/rc.local
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
# In contrast to previous versions due to parallel execution during boot# this script will NOT be run after all other services.
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
16、打出netstat -tan命令执行结果以'LISTEN'后跟空白字符结尾的行 。
[root@localhost /]# netstat -tan | egrep "LISTEN[[:space:]]+"
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp6 0 0 :::111 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
17、添加用户bash,testbash,basher,nologin(此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息 。 [root@localhost /]# useradd bash
[root@localhost /]# useradd testbash
[root@localhost /]# useradd basher
[root@localhost /]# useradd -s /sbin/nologin nologin
[root@localhost /]# egrep "^(\<[a-z]+\>).*\1$" /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
bash:x:2004:2004::/home/bash:/bin/bash
nologin:x:2007:2007::/home/nologin:/sbin/nologin
留言评论