linux文本处理工具及正则表达式

cat命令:查看文本内容

         cat [选项]... [文件]...

         -E    展现行终止符

         -n    展现文本内容时呈现行号

         -A    展现所以调控符

         -b    非空行编号

         -s     压缩三番三遍的空行成意气风发行

[root@bogon ~]# cat -n /etc/issue > test.txt    ##查看文件内容并显示行号,重定向到test.txt文件中
[root@bogon ~]# cat test.txt 
     1    S
     2    Kernel r on an m
     3    

[root@bogon ~]# cat > file <<EOF    ##创建file文件,输入内容以EOF结束
> kernel r on an m
> EOF
[root@bogon ~]# cat file 
kernel r on an m

more       分页展现

         more [OPTIONS...] FILE...

less  分页呈现,是man命令使用的分页器

[root@bogon ~]# less /etc/httpd.conf 
[root@bogon ~]# cat /etc/httpd.conf |more

head命令 : 

         head [OPTION]... [FILE]...

    -n  展现文件前n行,暗中认可彰显前10行

    -c # 彰显文件前#个字节内容

    -q  不显示包涵给定文件名的文件头

[root@bogon ~]# head -5 /etc/fstab     ##显示文件前5行
#
# /etc/fstab
# Created by anaconda on Mon May  1 04:49:06 2017
#

[root@bogon ~]# head -q -n 5 /etc/fstab /etc/issue    ##显示多个文件前5行,并且不显示文件头

#
# /etc/fstab
# Created by anaconda on Mon May  1 04:49:06 2017
#
S
Kernel r on an m  

tail命令:

tail [OPTION]... [FILE]...

         -f   实时翻看,常用监察和控制日志文件

   -c #   显示后#字节

   -n #  显示后#行,默许呈现行10行

[root@bogon ~]# tail -2 /etc/passwd    ##显示文件后2行
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
[root@bogon ~]# tail -f /var/log/messages    ##不停地去读最新的内容,有实时监视的效果,用Ctrl+c来终止

May 2 02:46:26 localhost systemd: Configuration file /usr/lib/systemd/system/wpa_supplicant.service is marked executable. Please remove executable permission bits. Proceeding anyway. May 2 02:46:26 localhost yum[16325]: Installed: httpd-2.4.6-45.el7.centos.4.x86_64 May 2 03:01:01 localhost systemd: Started Session 10 of user root. May 2 03:01:01 localhost systemd: Starting Session 10 of user root. May 2 03:45:49 localhost systemd-logind: Removed session 4. May 2 03:46:20 localhost systemd: Started Session 11 of user root. May 2 03:46:20 localhost systemd-logind: New session 11 of user root. May 2 03:46:20 localhost systemd: Starting Session 11 of user root. May 2 04:01:01 localhost systemd: Started Session 12 of user root. May 2 04:01:01 localhost systemd: Starting Session 12 of user root.

 cut命令:

cut [OPTION]... [FILE]...

  -d  指明分隔符,私下认可tab

  -f  第# 个字段

  #,#[,#] :离散的多少个字段,举个例子1,3,6

  #-# :接二连三的七个字段,  比方1-6

  混合使用:1-3,7

  -c 按字符切割

  --output-delimiter=ST酷威ING钦赐输出分隔符

 展现文件前10行,以“:”作为分隔符打字与印刷第1和第7个字段并分隔符换来空格输出:

[root@bogon ~]# head /etc/passwd |cut -d ":" -f1,7 --output-delimiter="   "  ##查看系统用户使用的shell
root   /bin/bash      
bin   /sbin/nologin
daemon   /sbin/nologin
adm   /sbin/nologin
lp   /sbin/nologin
sync   /bin/sync
shutdown   /sbin/shutdown
halt   /sbin/halt
mail   /sbin/nologin
operator   /sbin/nologin

[root@bogon ~]# ip addr |tail -4 |head -1 |cut -d "/" -f1 |cut -d " " -f6  ##获取ip地址
192.168.25.102

paste命令:

  paste [OPTION]... [FILE]...

  -d  分隔符: 钦定分隔符,暗中同意用TAB

  -s     所以行统一成生机勃勃行展现

[root@bogon ~]# paste /etc/resolv.conf /etc/issue    ##合并输出两个文件的内容
# Generated by NetworkManager    S
nameserver 202.106.46.151    Kernel r on an m
nameserver 202.106.195.68    
[root@bogon ~]# paste -s /etc/issue    ##对输出的内容独立占一行
S    Kernel r on an m    

wc命令:总括文件内容

         -l      总结行数

         -w    总括单词个数

         -c     总计字节数

         -m    只计数字符总量

     -L  打字与印刷最长行的尺寸

[root@bogon ~]# cat /etc/passwd |wc -l  ##统计文件的行数
22
[root@bogon ~]# echo "aaa bbb ccc" |wc -w    ##统计输出的单词数量
3
[root@bogon ~]# echo "abcdef" |wc -m    ##统计输出有多少个字节
7

文本排序:sort [options] file(s)

  -r   逆序排序

  -n   依照字符串数值进行相比

  -f   忽视字符大小写

  -u   去重。合作-c,严苛校验排序;不宽容-c,则只输出二遍排序结果

  -t   使用钦赐的相间符代替非空格到空格的转移

  -k 1 在岗位1 开班二个key,在职责2 悬停(默感到行尾卡塔尔国

[root@bogon ~]# head /etc/passwd |sort -t ":" -k 3nr    ##以“:”分割对第三个字段数值进行倒序排列
operator:x:11:0:operator:/root:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
[root@bogon ~]# cat /etc/passwd |sort -t':' -k 7 -u    ##以“:”分割对第7个字段排序,去重
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
halt:x:7:0:halt:/sbin:/sbin/halt
bin:x:1:1:bin:/bin:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

uniq 命令:从输入中去除重复的左右持续的行

   uniq [OPTION]... [FILE]...

  -c:  呈现每行重复出现的次数;

  -d:  仅展现重复过的行;

  -u:  仅呈现唯黄金年代的行;

  -i:  比较时不区分轻重缓急写

[root@bogon ~]# uniq -c ip.txt     ##显示重复行出现的次数,相邻行且完全一样为重复
      3 101.200.78.99
      1 103.41.52.94
      2 106.185.47.161
      1 101.200.78.99
      2 113.240.250.155
      1 13.0.782.215
      1 185.130.5.231

文本相比较:

diff命令:比较五个文本之间的分别

  -r  递归相比

  -u  输出“统一的(unified )

  patch 命令复制在其余文件中举行的变动(要稳重使用!)

  -b   选项来自动备份改造了的文本

[root@bogon ~]# diff file1.txt file2.txt 
8c8      ##表示第8行有区别
< 113.240.250.155
---
> 133.240.250.155

轮流和删除字符:

真钱捕鱼 ,         tr [OPTION]... SET1 [SET2]

                   -c 或——complerment :取字符集的补集

                   -d 或——delete :删除全体归属第一字符集的字符;

                   -s 或—squeeze-repeats :把一而再三回九转重复的字符以独立一个字符表示

                   -t 或--truncate-set1 :先删除第一字符集较第二字符集多出的字符

[root@bogon ~]# tr -s 'n'  < file1.txt     ##删除空行
103.41.52.94
106.185.47.161
S
Kernel r on an m
106.185.47.161
[root@bogon ~]# tr  A-Z a-z < file1.txt     ##把大写字母换成小写
103.41.52.94
106.185.47.161
s
kernel r on an m

106.185.47.161
grep命令:过滤文本内容

         grep [OPTIONS] PATTERN [FILE...]

         -i       查找时忽视大小写

         -v     取反

    -n      彰显相配的行号

     -c     总结相称的行数

    -o     仅突显相称到的字符串;

    -q    静默情势,不出口任何新闻

  -A #   after,  后#行 行

  -B #  before,  前#行 行

  -C #   context,  前后各#行 行

  -e   达成多少个筛选间的逻辑or 关系

linux文本处理工具及正则表达式。  -w   整行相称整个单词

  -E   使用扩充正则表明式

正则表达式:

.     相配猖狂单个字符;

[]    相配钦点范围内的轻巧单个字符

[^]  相称钦赐范围外的人身自由单个字符

*   相配前边的字符任性次,包含0次 次贪婪形式:尽恐怕长的匹配

.*   率性长度的任性字符

?   相配其前方的字符0 或1次 

+   相配其前面的字符最少1次

{m}   相称前边的字符m次 

{m,n}   相称前边的字符起码m 次,至多n次 

{,n}   相配前边的字符至多n次 次

{m,}   相配后面包车型大巴字符最少m次

^   行首锚定,用于形式的最左侧

$   行尾锚定,用于格局的最右边

^PATTE哈弗N$  用来情势相配整行

^$   空行

^[[:space:]]*$   空白行

< 或 或 b   词首锚定,用于单词方式的左边手

> 或 或 b   词尾锚定;用于单词方式的出手

<PATTERN>   相称整个单词

(卡塔尔(قطر‎    将三个或四个字符捆绑在联合,充任叁个整机进行拍卖

[:alpha:] 全体字母,饱含大、小写

[:alnum:] 全数字母和数字

[:upper:] 所有大写字母

[:lower:] 全体小写字母

[:digit:] 全部数字

[:punct:] 全部标点符号

[:space:] 空格和Tab

 

恢宏正则表明式:

.    大肆单个字符

[]    钦命范围的字符

[^]    不在钦点范围的字符

*   相称前边字符大七回

?   0 或1次 次

+   1 次或频仍

{m}   匹配m次 

{m,n}   至少m ,至多n次 

^  行首

$   行尾

<, b  语首

>, b    语尾

分组  ()

  后向援用:1, 2, ...

     或者:a|b

     C|cat: C 或cat

     (C|c)at:Cat 或cat

[root@bogon ~]# grep '^(root|apache)' test.txt   ##过滤以root或apache开头的行
root:x:0:0:root:/root:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
[root@bogon ~]# grep -R /sbin/nologin *     ##递归从所以文件中查询匹配的内容
test.txt:bin:x:1:1:bin:/bin:/sbin/nologin
test.txt:daemon:x:2:2:daemon:/sbin:/sbin/nologin

[root@bogon ~]# ip addr |grep "dynamic" |tr -s " " |cut -d " " -f3 |cut -d "/" -f1  ##过滤ip地址
192.168.25.102
[root@bogon ~]# ip addr |grep -E -o "([0-9]{1,3}[.]){1,3}[0-9]{1,3}"
127.0.0.1
192.168.25.102
192.168.25.255

[root@bogon ~]# df -Th |tr -s " " |sort -k 6nr |head -1  ##查出使用率的最大百分比值的分区
/dev/sda1 xfs 497M 125M 373M 25% /boot

[root@bogon ~]# cat /etc/passwd  |sort -t ':' -k 3n |tail -1 |cut -d ":" -f1,3,7
systemd-bus-proxy:999:/sbin/nologin      ##找出uid最大值的用户,并显示用户名、UID、及shell类型

 

返回列表