shell正则表达式和cut命令
正则表达式
符号 | 描述 |
---|---|
$ | 匹配输入字符串的结尾位置 |
() | 标记一个子表达式的开始和结束位置 |
* | 匹配前面的子表达式零次或多次 |
+ | 匹配前面的子表达式一次或多次 |
. | 匹配除换行符(\n)之外的任何单字符 |
[] | 匹配一个中括号表达式的开始 |
? | 匹配前面的子表达式零次或一次 |
|将下一个字符标记为特殊字符 | |
^ | 匹配输入字符串的开始位置 |
{} | 标记限定符表达式的开始 |
| | 指明两项之间的一个选择 |
定位符号 | 描述 |
---|---|
^ | 匹配输入字符串开始的位置 |
$ | 匹配输入字符串结尾的位置 |
非打印字符 | 描述 |
---|---|
\n | 匹配一个换行符 |
\r | 匹配一个回车符 |
\t | 匹配一个制表符 |
统计/etc/ssh/sshd_config文件中去除空行和#号开头的行
[root@VM_0_7_centos ~]# grep -v '^$\|^#' /etc/ssh/sshd_config
扩展正则表达式
[root@localhost ~]# grep -E -v '^$|^#' /etc/ssh/sshd_config
扩展正则表达式
[root@localhost ~]# egrep -v '^$|^#' /etc/ssh/sshd_config
cut
cut命令用来显示行中的指定部分,删除文件中指定字段
该命令有两项功能
其一是用来显示文件的内容,依次读取由参数file所指明的文件,将它们的内容输出到标准输出上
其二是连接两个或多个文件,
如cut f1 f2 > f3
将把文件f1和f2的内容合并起来,然后通过输出重定向'>'把他们放入文件f3中
语法
cut(选项) (参数)
选项
- -b 仅显示行中指定范围的字节数
- -c 仅显示行中指定范围的字符
- -d 指定字段的分隔符,默认的字段分割符是'tab'
- -f 显示指定字段的内容
取出passwd中第一列的用户名
[root@VM_0_7_centos ~]# cut -f1 -d ":" /etc/passwd
root
bin
...
以:为分割符,取出第一列
cut命令可以将列中的某几个字节,字符,字段取出
-
-b 表示字节
-
-c 表示字符
-
-f 表示定义字段
-
n- 从第n个(字节,字符,字段)到结尾
-
n-m 从第n个(字节,字符,字段)到第m个(字节,字符,字段)
-
-m 从第一个(字节,字符,字段)到第m个
每一列的前三个字母
[root@VM_0_7_centos ~]# cut -c1-3 /etc/passwd
roo
bin
每一列的前两个字母
[root@VM_0_7_centos ~]# cut -c-2 /etc/passwd
ro
bi
从第五个字母到最后
[root@VM_0_7_centos ~]# cut -c5- /etc/passwd
:x:0:0:root:/root:/bin/bash
x:1:1:bin:/bin:/sbin/nologin