标签:undle address 数据 技术分享 last home obj image wget
10-正则表达式-grep
在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的
正则表达式分类
基本组成部分
选项
-a 不要忽略二进制数据。
-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i 忽略字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-q 不显示任何信息。
-R/-r 此参数的效果和指定“-d recurse”参数相同。
-s 不显示错误信息。
-v 反转查找。
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-o 只输出文件中匹配到的部分。
grep命令常见用法
文件中查找一个单词:
grep match_pattern file_name
grep "match_pattern" file_name
多个文件中查找:
grep "match_pattern" file_1 file_2 file_3 ...
输出除之外的所有行 -v 选项:
grep -v "match_pattern" file_name
使用正则表达式 -E 选项:
grep -E "[1-9]+"
egrep "[1-9]+"
只输出文件中匹配到的部分 -o 选项:
echo this is a test line. | grep -o -E "[a-z]+\."
line.
echo this is a test line. | egrep -o "[a-z]+\."
line.
统计文件或者文本中包含匹配字符串的行数 -c 选项:
grep -c "text" file_name
在多级目录中对文本进行递归搜索:
grep "text" . -r -n
选项 -e 制动多个匹配样式:
echo this is a text line | grep -e "is" -e "line" -o
is
line
显示出所有含有root的行:
cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash
输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容:
[root@cx2c ~]# grep -C ‘2‘ bash /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
chrony:x:996:994::/var/lib/chrony:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
ads247admin:x:1000:1000::/home/ads247admin:/bin/bash
cx2c:x:1001:1001::/home/cx2c:/bin/bash
显示出有多少行含有nologin。
[root@cx2c ~]# grep -c ‘nologin‘ /etc/passwd
22
显示出那些行含有root,并将行号一块输出。
[root@cx2c ~]# grep -n ‘root‘ /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
显示出文件中
新建用户 abominable
abominate
anomie
atomize
编写正则表达式,将他们匹配出来
[root@cx2c ~]# adduser abominable
[root@cx2c ~]# adduser abominate
[root@cx2c ~]# adduser anomie
[root@cx2c ~]# adduser atomize
[root@cx2c ~]# egrep ‘^a[a-z]omi[a-z]*‘ /etc/passwd
abominable:x:1002:1002::/home/abominable:/bin/bash
abominate:x:1003:1003::/home/abominate:/bin/bash
anomie:x:1004:1004::/home/anomie:/bin/bash
atomize:x:1005:1005::/home/atomize:/bin/bash
建四个用户 Alex213sb
Wpq2222b
yH438PIG
egon666 egon
过滤出用户名组成是字母+数字+字母的行
[root@cx2c ~]# adduser Alex213sb
[root@cx2c ~]# adduser Wpq2222b
[root@cx2c ~]# adduser yH438PIG
[root@cx2c ~]# adduser egon666egon
[root@cx2c ~]# egrep ‘([a-Z]+)([0-9]+)([a-Z]+)‘ /etc/passwd
ads247admin:x:1000:1000::/home/ads247admin:/bin/bash
cx2c:x:1001:1001::/home/cx2c:/bin/bash
Alex213sb:x:1006:1006::/home/Alex213sb:/bin/bash
Wpq2222b:x:1007:1007::/home/Wpq2222b:/bin/bash
yH438PIG:x:1008:1008::/home/yH438PIG:/bin/bash
egon666egon:x:1009:1009::/home/egon666egon:/bin/bash
显示出/etc目录下所有包含root的文件名
grep -rl
[root@cx2c ~]# grep -rln "root" /etc/
/etc/pki/ca-trust/ca-legacy.conf
/etc/pki/ca-trust/extracted/README
/etc/pki/ca-trust/extracted/java/README
/etc/pki/ca-trust/extracted/java/cacerts
/etc/pki/ca-trust/extracted/openssl/README
/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
/etc/pki/ca-trust/extracted/pem/README
/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
/etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem
/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem
...
过滤掉/etc/ssh/sshd_config内所有注释和所有空行
egrep -v "^$|^#" /etc/ssh/sshd_config | sed ‘s/#.*.//g‘
Linux下源码安装Python并设置PATH
// readline-devel python shell里 方向键可用
// 机器默认是2.7,安装完之后需要把python命令链接到3.6
yum -y install zlib zlib-devel gcc readline-devel
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
xz -d Python-3.6.1.tar.xz
tar -xvf Python-3.6.1.tar
cd Python-3.6.1/
./configure
make all
make install
rm /bin/python
ln -s /usr/local/bin/python3.6 /bin/python //设置默认python3.6为默认python
windows下安装python,并设置PATH
标签:undle address 数据 技术分享 last home obj image wget
原文地址:http://www.cnblogs.com/cx2c/p/6943247.html