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=STRING指定输出分隔符

显示文件前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 关系

  -w   整行匹配整个单词

  -E   使用扩展正则表达式

正则表达式:

.     匹配任意单个字符;

[]    匹配指定范围内的任意单个字符

[^]  匹配指定范围外的任意单个字符

*   匹配前面的字符任意次,包括0次 次贪婪模式:尽可能长的匹配

.*   任意长度的任意字符

\?   匹配其前面的字符0 或1次

\+   匹配其前面的字符至少1次

\{m\}   匹配前面的字符m次

\{m,n\}   匹配前面的字符至少m 次,至多n次

\{,n\}   匹配前面的字符至多n次 次

\{m,\}   匹配前面的字符至少m次

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

$   行尾锚定,用于模式的最右侧

^PATTERN$  用于模式匹配整行

^$   空行

^[[: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类型

以上所述是小编给大家介绍的linux文本处理工具及正则表达式集锦,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • linux shell 正则表达式(BREs,EREs,PREs)差异比较

    在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容.许多程序设计语言都支持利用正则表达式进行字符串操作.例如,在Perl中就内建了一个功能强大的正则表达式引擎.正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的.正则表达式通常缩写成"regex",单数有regexp.regex,复数有regexps.regexes.regexen.这些

  • 详解正则表达式及Linux三大文本处理工具

    grep.sed和awk都是文本处理工具,虽然都是文本处理工具但却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了. 一.正则表达式 1.匹配字符的类型 [a-z]:小写字母 [A-Z]:大写字母 [a-Z]:小或大写字母 [0-9]:数字 [a-zA-Z0-9]:表示匹配一个为字母或数字的字符 . :匹配1个任意字符,空格除外 [0-f]:16进制数 abc | def:abc或def a (bc | de) f:abcf 或 adef \<:单词头

  • linux grep正则表达式与grep用法详解

    需要大家牢记:正则表达式与通配符不一样,它们表示的含义并不相同 正则表达式只是字符串的一种描述,只有和支持正则表达式的工具相结合才能进行字符串处理.本文以grep为例来讲解正则表达式. grep命令 功能:输入文件的每一行中查找字符串. 基本用法: grep [-acinv] [--color=auto] [-A n] [-B n] '搜寻字符串' 文件名 参数说明: -a:将二进制文档以文本方式处理 -c:显示匹配次数 -i:忽略大小写差异 -n:在行首显示行号 -A:After的意思,显示匹

  • Linux中文本处理工具之cut命令详解

    前言 Cut 输入字符中指定的字段或指定的范围.若处理的是字段,则定界符隔开的即为各字段,而输出时字段也以给定的定界符隔开.默认的定界符为制表字符(TAB).下面来看看详细的介绍吧. 一.cut实战演练 cut.txt文件 root,x,0,0,root,/root,/bin/bash daemon,x,1,1,daemon,/usr/sbin,/usr/sbin/nologin bin,x,2,2,bin,/bin,/usr/sbin/nologin sys,x,3,3,sys,/dev,/u

  • linux 正则表达式深度解析

    简介 大体来讲,正则表达式的文法分为3种标准:BRE.ERE 和 ARE.其中 BER 和 ERE 属于 POSIX 标准,ARE 则是由各家定义的扩展. POSIX 正则表达式 传统上,POSIX 定义了两种正则表达式语法, 即:基本正则表达式(BRE)和扩展正则表达式(ERE). 其中, BRE 定义的语法符号包括: . - 匹配任意一个字符.[] - 字符集匹配,匹配方括号中定义的字符集之一.[^] - 字符集否定匹配,匹配没有在方括号中定义的字符.^ - 匹配开始位置.$ - 匹配结束位

  • Linux 正则表达式详解

    一.linux文本查找命令 在说linux正规表达式之前,还介绍下linux中查找文本文件常用的三个命令: 1.grep : 最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本. 2.egrep : 扩展式grep,其使用扩展式正规表达式(ERE)来匹配文本. 3.fgrep : 快速grep,这个版本匹配固定字符串而非正则表达式.并且是唯一可以并行匹配多个字符串的版本. 如下简单的介绍grep命令: 语法格式: grep [options ...] pattern-sp

  • Linux中文本处理工具之sort命令详解

    前言 sort命令将每一行作为一个单位进行比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按一定的顺序进行输出,实际上,sort命令可以被认为是一个非常强大的数据治理工具,用来治理内容类似数据库记录的文件.下面来一起看看吧. 一.sort实战演练 sort.txt root,x,0,0,root,/root,/bin/bash daemon,x,1,1,daemon,/usr/sbin,/usr/sbin/nologin bin,x,2,2,bin,/bin,/usr/sb

  • 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@bogo

  • Linux文本处理工具使用详解

    1.统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户个数,并将用户都显示出来 grep是一个文本工具,是通过一行一行来匹配文本进行处理的: 通过grep命令,借助-v参数显示不匹配的行: getent passwd | grep -Ev /sbin/nologin$ 2.查出用户UID最大值的用户名.UID及shell类型 Sort用于排序,添加特定的参数可以根据不同需求排序: head 用户取前几行的: cut 是用于取特定列的: sort -k3 -t"

  • Linux行处理工具之grep 正则表达式详解

    目录 正则表达式在grep应用以及差别 匹配案例 fgrep 总结 之前我们学习了linux grep的基本操作,以及提及了linux grep的孪生兄弟egrep 和 fgrep,这次我们来看下. 在介绍正则表达式之前,我们先来尝试一下,假如有如下文本. 我们想获取空行,应该如何来写呢? 命令: grep ^$ test1 -n 通过上述例子,我们使用正则表达式^$已经成功拿到了第四行数据,那么,这究竟如何解呢,我们细看博文. 正则表达式在grep应用以及差别 grep表达式有三种不同的版本,

  • Centos7 Shell编程之正则表达式、文本处理工具详解

    目录 1. 正则表达式 1.1 常规匹配 1.2 常用特殊字符 2. 文本处理工具 2.1 cut 2.2 awk 1. 正则表达式 正则表达式可以很灵活的提供各种模糊匹配的筛选规则.常被用来检索.替换那些符合某个模式的文本.grep.sed.awk等文本处理工具都支持通过正则表达式进行模式匹配 1.1 常规匹配 一串不包含特殊字符的正则表达式,匹配包含它自己的字符,例如: [root@bigdata001 ~]# cat /etc/passwd | grep root root:x:0:0:r

  • 一天一个shell命令 linux文本内容操作系列-awk命令详解

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK

  • 一天一个shell命令 linux文本内容操作系列-grep命令详解

    从这篇开始,是文本内容操作,区别于文本操作. Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. shell,perl,python,一直都是文本操作的专家语言,而我们今后学习的的将是shell的噱头--文本操作.下面提到最常见的一个: grep 这算是文本内容的一个重量级选手,能根据某些规格在上千行的文本文件中查找

  • 简述Linux文本处理命令“sed”

    文本处理编辑命令sed sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. 命令格式: sed [选项] '(截取的

  • Linux 命令行工具解析和格式化输出 JSON的方法

    JSON 是一种轻量级且与语言无关的数据存储格式,易于与大多数编程语言集成,也易于人类理解 -- 当然,如果格式正确的话.JSON 这个词代表 J ava S cript O bject N otation,虽然它以 JavaScript 开头,而且主要用于在服务器和浏览器之间交换数据,但现在正在用于许多领域,包括嵌入式系统.在这里,我们将使用 Linux 上的命令行工具解析并格式化打印 JSON.它对于在 shell 脚本中处理大型 JSON 数据或在 shell 脚本中处理 JSON 数据非

  • python演示解答正则为什么是最强文本处理工具

    正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式通常被用来检索.替换那些符合某个模式(规则)的文本. Python作为一门数据处理语言,经常使用正则匹配段落,比如爬虫爬取数据时.正则表达式是Python内置的模块,不需要额外安装. 今天来给大家分享一份比较全面的Python正则表达式宝典,学会之后,你将掌握正则表达式的各种应用场景. re模块 re (Regular Expression简

随机推荐