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

猜你喜欢

转载自www.cnblogs.com/inmeditation/p/12163403.html