paste -d"#" | f1 f2 横向合并文件,并以#作为分隔符 |
cut -d ‘%’ -f2,3-5 | 以%分隔符,取第二列和三到五列 |
cat f1 f2 | 纵向合并文件 |
tac f1 f2 | 和cat显示内容是相反的 |
tr -s " " “%” | 空格压缩为% |
tr -s " " | 仅仅压缩空格 |
[root@nginx ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.186.39.193 netmask 255.255.0.0 broadcast 10.186.255.255
ether 52:54:00:33:78:f8 txqueuelen 1000 (Ethernet)
RX packets 8942034 bytes 5666332700 (5.2 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7219762 bytes 1850180335 (1.7 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@nginx ~]# ifconfig eth0 |head -n2 |tail -n1
inet 10.186.39.193 netmask 255.255.0.0 broadcast 10.186.255.255
[root@nginx ~]# ifconfig eth0 |head -n2 |tail -n1 |tr -s ' ' | cut -d ' ' -f3
10.186.39.193
sort 默认排序
-t 制定分隔符
-u 去重排序
-n 顺序排序(由小到大)
-r 和-n相反
-R 随机排序 (生成随机数,比如抽奖)
-k 指定那一列
[root@nginx ~]# echo {1..50} | tr -s " " "\n" |sort -R |head -n1 #生成随机数
12
[root@nginx ~]# echo {1..50} | tr -s " " "\n" |sort -R |head -n1
46
[root@nginx ~]# cat /var/log/nginx/access.log | cut -d' ' -f1 | sort -u -n #排序并去重
1.202.69.104
5.8.54.27
23.254.203.250
36.152.17.61
37.59.57.78
43.226.144.199
52.222.3.206
52.77.223.212
uniq
-c 显示重复的次数
-d 仅仅显示重复的行
-u 仅仅显示不曾重复的行
[root@nginx ~]# cat /var/log/nginx/access.log | cut -d " " -f1 |uniq -c |sort -nr |head -n10 #对一个网站访问前十次的IP排名
400 119.29.143.122
252 43.226.144.199
13 222.128.2.100
13 1.202.69.104
12 82.223.29.247
12 37.59.57.78
12 188.40.127.8
12 120.55.164.49
10 52.222.3.206
4 59.110.237.76
[root@nginx ~]# sort -t " " -k1 /var/log/nginx/access.log | cut -d " " -f1 |uniq -c |sort -nr |head -n10 #也是对访问前十的IP排序
[root@nginx ~]# sort -t " " -k1 /var/log/nginx/access.log | cut -d " " -f1 |uniq -c |sort -nr |head -n10 |tr -s " " |cut -d " " -f3 #去掉前面的次数
119.29.143.122
43.226.144.199
222.128.2.100
1.202.69.104
82.223.29.247
52.222.3.206
37.59.57.78
188.40.127.8
120.55.164.49
59.110.237.76
[root@nginx ~]# cat f2
aa
bb
deklfmef
ferf
er
[root@nginx ~]# cat f1
aa
bb
ddddd
cc
ggg
[root@nginx ~]# cat f1 f2 | sort |uniq -d #找两个文件相同的行
aa
bb
#grep
grep:
-a 不要忽略二进制数据。
-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b/-B 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。=egrep
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-i 忽略字符大小写的差别。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-q 不显示任何信息, 用于判断返回值。
-R/-r 此参数的效果和指定“-d recurse”参数相同。
-s 不显示错误信息。
-v 反转查找。
-w 只显示全字符(单词)合的列。"a b c " "a-b-c" "a,b,c" 这三种属于三个单词。
-o 只输出文件中匹配到的部分。
-i -v -c -o -q -A -B -C -e -w
[root@nginx ~]# grep $(whoami) /etc/passwd
[root@nginx ~]# grep $USER /etc/passwd
[root@nginx ~]# grep -e root -e nginx /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
nginx:x:995:992:Nginx web server:/var/lib/nginx:/sbin/nologin
[root@nginx ~]# grep -n -A2 root /etc/passwd
[root@nginx ~]# grep -n -B2 root /etc/passwd
[root@nginx ~]# grep -n -C2 root /etc/passwd
[root@tengine mnt]# grep "\(root\)" /etc/passwd
#查看配置文件中的有用信息
cat /etc/my.cnf |tr -s " " |grep -v ^# |grep -v ^$ |grep -v "#"
#以若干个空格开头后跟linux16的行
grep "^[[:space:]]\+linux16" /boot/grub2/grub.cfg
[root@nginx ~]# nmap -v -sP 119.29.143.0/24. #探测存活主机
[root@nginx ~]# nmap -v -A 119.29.143.254. #探测服务
[root@nginx ~]# nmap -v -sP 119.29.143.0/24 | grep -B1 "up" |cut -d" " -f5 |grep 119 #探测某个网断存活的主机
119.29.143.11
119.29.143.12
119.29.143.13
119.29.143.14
119.29.143.15
119.29.143.16
119.29.143.17
root@JD:~# grep `whoami` /etc/passwd #要使用反引号,不用使用引号或者双引号(匹配不到)
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@aliyun data]# ifconfig eth0 |grep -o "[0-9.]\{7,\}" #查看网卡IP地址
172.16.31.64
255.255.192.0
172.16.63.255
380127248
323691159
[root@aliyun data]# grep -v ^[[:space:]]\*$ y #过滤掉空行,^[[:space:]]$表示空白行
HHHHH
[root@aliyun data]# cat y
HHHHH
[root@aliyun data]# grep -w root /etc/passwd #包含root这个单词的行(a-b-c,a b c,(a,b,c)这都算三个单词)
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@aliyun data]# grep "\<root" /etc/passwd #root这个单词开头的行,单词的最左侧
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
rooter:x:1002:1002::/home/rooter:/bin/bash
[root@aliyun data]# grep ^root /etc/passwd #root这个匹配模式的开头的行,匹配模式的最左侧
root:x:0:0:root:/root:/bin/bash
rooter:x:1002:1002::/home/rooter:/bin/bash
[root@aliyun data]# grep "root\>" /etc/passwd #root着单词结尾的行,单词的最右侧
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
adminroot:x:1003:1003::/home/adminroot:/bin/bash
[root@aliyun data]# echo hhhhaa |grep aa$ #aa为匹配模式结尾的行
hhhhaa
[root@aliyun data]# grep "\<root\>" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@aliyun data]# grep "\broot\b" /etc/passwd # \<也可用\b来表示,\>也可以用\b
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@aliyun data]# grep "^\(.*\):.*/\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
[root@aliyun data]# grep "^halt.*halt$" /etc/passwd
halt:x:7:0:halt:/sbin:/sbin/halt
[root@aliyun data]# grep "\(\<.*\):.*\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
[root@aliyun data]# echo mamamamaXXXXXXXgegegege |grep "\(ma\)\{4\}"
mamamamaXXXXXXXgegegege
[root@aliyun data]# echo mamamamaXXXXXXXgegegege |grep "\(ma\)\{4\}.*\(ge\)\{4\}"
mamamamaXXXXXXXgegegege
[root@aliyun data]# echo mamamamaXXXXXXXmamamama |grep "\(ma\)\{4\}.*\1" #\1表示对\(ma\)\{4\}>>mamamama这个整体
mamamamaXXXXXXXmamamama
[root@aliyun data]# echo mamamamaXXXXXXXgegegege |grep "\(ma\)\+"
mamamamaXXXXXXXgegegege
[root@aliyun data]# grep "^a\|^b.*" /etc/passwd #表示a开头的或者b开头后面跟随意字符
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
admin:x:1000:1000::/home/admin:/bin/bash
adminroot:x:1003:1003::/home/adminroot:/bin/bash
ahalt:x:1004:1004::/home/ahalt:/bin/bash
[root@aliyun data]# grep "\(^a\|^b\).*" /etc/passwd #表示a开头后跟任意字符或者b开头后跟任意字符
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
admin:x:1000:1000::/home/admin:/bin/bash
adminroot:x:1003:1003::/home/adminroot:/bin/bash
ahalt:x:1004:1004::/home/ahalt:/bin/bash
[root@aliyun data]# echo bbb |grep "a\|b"
bbb
[root@aliyun data]# echo aaa |grep "a\|b"
aaa
[root@aliyun data]# echo bxy |grep "a\|bxy"
bxy
[root@aliyun data]# echo bxy |grep "\(a\|b\)xy"
bxy
[root@aliyun data]# grep -o "[0-9]\+" /etc/redhat-release |head -n1 #取redhatOS大的系统版本号