常见的文本处理工具及正则表达式的相关知识

1.cat命令使用详解

cat [option]… [file]…

-A equivalent=vET

-b 非空行编号

-E 行为显示$

-n 显示所有行的行号

-s 行号并压缩连续空行为一行

-T 显示tab为^M

实例:显示a文件的行号及所有控制符

1.png

2.(1)head使用详解

head -n x 显示前x行

head -c x 显示前x字节

(2)tail 使用详解

tail -n x 显示后x行

tail -c x 显示后x字节

tail -f 跟踪显示文件新追加内容(可用于日志文件的监控)

实例:显示/etc/man.config的6-8行

head -n 8 /etc/man.config | tail -n 2

3.cut命令使用详解

cut -d  '分割字符' -f fields(一行当中,取出部分列)

cut -c 字符范围 以“字符的单位”取出固定字符区间

字符范围:n  1…n

                n-m

                m-  m…..

–output-delieter=string 输出分隔符

4.paste命令使用详解

-d       指定分隔符

-s  所有行合为一行显示

2.png

5.wc命令使用详解

wc -l   按行

wc -w  字(英文单字)

wc -m 字符

6.diff与patch使用

diff   patch

diff -u old new > patch   -u 选项用来输出统一的(unified)格式,最适用于补丁文件

patch -b old patch  -b 自动备份改变的文件

注意:人清命令及参数顺序

7.sort命令使用详解

sort [option] file|stdin

-b 忽略最前边空格

-f 忽略大小写(fold lower case to upper case character)

-M 按照月份compare<jan<….<dec

-r 反向排序

-t 分隔符 默认‘tab’分割

-k 以第几个区间排序

-u 唯一排序

8.正则表达式

.正则表达式是处理字符串的方法,以行为单位处理,以特殊符号的辅助,可以让用户轻易达到查找,删除,替换某特定字符串

(1)

grep (以行为单位)

grep [options] 'str' filename

-E 拓展正则表达式

-P –perl-regexp

-c 计算找到包含字符串的行的次数 –count

-e实现多个选项间的逻辑or关系

-o 仅显示匹配到的字符串

-q 静默模式,不输出信息

-w 整行匹配整个单词

-i 忽略大小写

-n 顺便输出行号

-v 反向选择

(2)字符匹配: ".":匹配任意单个字符

“[ ]":匹配自定范围内的单个字符   [a-z]仅仅指得是ab c d ….z,不是通配符下的意义

“[^]”:匹配范围内之外字符

[:alnum:]:任意字符和数字

[:punt:]:punctuation symbol标点符号

[:space:]:代表tab和空格

(3)匹配次数    养成加引号的习惯

* :代表零次或任意多次匹配前一个字符

\?:匹配零次或一次前边的字符

\+:至少匹配一次前边的字符"

\{n\}:匹配n次

\{m,n\}:最少m次,最多n次

\{n,\}:最少n次

\{.n\}:最多n次

(4)位置锚定

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

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

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

\<:词首锚定,位于右侧

\>:词尾锚定,位于左侧

\<pattern\> 匹配整个单词

(5)分组

\(\):将一个或多个捆绑到一起,当做整体使用

分组括号中的模式匹配到的内容会被正则表达式引擎记录与内部变量中去,变量命名方式为\1,\2…

\1:匹配到内容为第一个左括号与相匹配的右边的括号之间

实例:\(str1\+\(str2\)\*)

\1:str1\+\(str2\)*

\2:str2

9.拓展正则表达式

(1)字符匹配   "."匹配任意单个字符

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

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

3.png

(2)匹配次数

* 重复零次或任意多次前边的字符

?匹配零次或一次前边的字符

+匹配一次以上前边的字符

{n}匹配n次前边的字符

{n,m}匹配n到m次前边的字符

(3)位置锚定

^行首

$行尾

\<词首

\>词尾

\<pattern\>匹配整个单词

(4)分组

(  )   

后向引用  \1  \2

(5)或者

a|b  a或者b

C|cat C或者cat

(C|c)at   Cat或cat

10.作业一

1470470638681675.png

解答:

1.
grep -i ^s.* /proc/meminfo
[root@localhost ~]# grep -i ^s.* /proc/meminfo
SwapCached:            0 kB
SwapTotal:       2047996 kB
SwapFree:        2047996 kB
Shmem:               264 kB
Slab:              85832 kB
SReclaimable:      24532 kB
SUnreclaim:        61300 kB
2.
[root@localhost ~]# grep -v /bin/bash$ /etc/passwd
3.
[root@localhost ~]# grep "^rpc\>" /etc/passwd | cut -d ':' -f 1,7
rpc:/sbin/nologin
[root@localhost ~]# 
4.
[root@localhost ~]# grep -w "[1-9][0-9]\{1,2\}" /etc/passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
5.
6.[root@localhost ~]# netstat -tan | grep "LISTEN[[:space:]]*"
tcp        0      0 0.0.0.0:33993               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0      0 :::44200                    :::*                        LISTEN      
tcp        0      0 :::111                      :::*                        LISTEN      
tcp        0      0 :::22                       :::*                        LISTEN      
tcp        0      0 ::1:631                     :::*                        LISTEN      
tcp        0      0 ::1:25                      :::*                        LISTEN      
7.[root@localhost ~]# grep "\(^.*\>\).*/\1$" /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
bash:x:1507:1508::/home/bash:/bin/bash

作业二.

1470472732331748.png

解答:

1.[root@localhost ~]# egrep "^(mage|wang|root)\>" /etc/passwd | cut -d ":" -f 1,3,7
root:0:/bin/bash
mage:1508:/bin/bash
wang:1509:/bin/bash
2.[root@localhost ~]# grep -E  "^[[:alpha:]]|_\(\).*" /etc/rc.d/init.d/functions 
TEXTDOMAIN=initscripts
umask 022
PATH="/sbin:/usr/sbin:/bin:/usr/bin"
export PATH
if [ -f /etc/sysconfig/i18n -a -z "${NOLOCALE:-}" -a -z "${LANGSH_SOURCED:-}" ] ; then
fi
if [ -z "${BOOTUP:-}" ]; then
fi
fstab_decode_str() {
checkpid() {
daemon() {
killproc() {
3[root@localhost ~]# grep -E  "^[[:alpha:]_]+\(\)" /etc/rc.d/init.d/functions 
fstab_decode_str() {
checkpid() {
__readlink() {
__fgrep() {
__kill_pids_term_kill_checkpids() {
__kill_pids_term_kill() {
__umount_loop() {
__source_netdevs_fstab() {
__source_netdevs_mtab() {
__umount_loopback_loop() {
__pids_var_run() {
__pids_pidof() {
daemon() {
killproc() {
pidfileofproc() {
4.[root@localhost ~]# echo "/etc/rc.d/init.d/functions" | grep -E "[^/$]" | grep -Eo\
>  "/.*/"
/etc/rc.d/init.d/
5.[root@localhost ~]# last | grep -E "^root\>.*[[:digit:]\.]{3}[[:digit:]]" | tr -s ' ' 'f' | cut -d "f" -f 3 | sort | uniq -c
     43 10.1.250.50
6.[0-9] [1-9][0-9]  [1][0-9][0-9] [2][0-4][1-9] 25[0-5]   
7.[root@localhost ~]# ifconfig | grep -E -o "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"
10.1.253.19
10.1.255.255
255.255.0.0
127.0.0.1
255.0.0.0

作业三

1、取各分区利用率的数值

[root@localhost ~]# df | tr -s " " ":" | cut -d ":" -f 1,5
Filesystem:Use%
/dev/sda2:17%
tmpfs:0%
/dev/sda1:19%
/dev/sda3:1%

2、统计/etc/init.d/functions 文件中每个单词出现的次数,并按频率从高到低显示

[root@localhost ~]# cat /etc/init.d/functions | tr -cs "[[:alpha:]]" "\n" | sort | uniq -c | sort -nr 
    168 [
    161 ]
     83 if
     77 then
     75 pid
     73 echo
     72 fi
     61 return
     57 dev
     54 file
     50 n
     46 local
     42 kill
     39 z
     36 base
     35 remaining

3、/etc/rc.d/init.d/functions或/etc/rc.d/init.d/functions/" 取目录名

[root@localhost ~]# echo "/etc/rc.d/init.d/functions" | grep -E -o "/.*[^/$]" | grep -Eo "/.*/"
/etc/rc.d/init.d/
[root@localhost ~]#

原创文章,作者:mengzhiqian,如若转载,请注明出处:http://www.178linux.com/30093

(0)
mengzhiqianmengzhiqian
上一篇 2016-08-07
下一篇 2016-08-07

相关推荐

  • 马哥教育21期网络班—第15周课程+练习—-sed 总结

    sed:编辑器 流编辑器,文本流编辑 ed: Stream EDitor, 行编辑器; 介绍:sed是 一个非交换性文本流编辑器,它编辑文件或标准输入导出的文本拷贝。标准输入可能来自键盘、文件重定向、字符串或变量,或者管道的文本。 sed可以干什么? 别忘了vi也是一个文本编辑器。sed可以随意编辑小或大的文件,有许多…

    Linux干货 2016-11-14
  • shell脚本编程基础(1)

    一.位置变量相关知识     1.位置变量定义:在脚本代码中调用通过命令行传递给脚本的的参数     2.位置变量种类:              &…

    Linux干货 2016-08-15
  • linux 必须掌握的60个命令

    Linux提供了大量的命令,利用它可以有效地完成大量的工 作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统, 就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。 不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200…

    2017-09-05
  • N22-love cat 17周博客作业第2部分-构建一个LVS-DR模型的高性能集群

    题目: 搭建一个LVS-DR模型的高性能集群,并实现以下功能:       (1)、wordpress程序通过nfs共享给个个realserver;       (2)、后端realserver中的nginx和php分离; 第17周   第2部分 网…

    Linux干货 2016-08-15
  • 目录的三权限之——R,W,X之间的爱恨纠葛!

    目录的三权限之——R,W,X之间的爱恨纠葛! 文件的权限我们一般都很容易了解,但是目录的权限,我们可能很多人就容易含混不清了,而许多时候目录的权限也是非常重要的。 因此我专门做了一个关于目录其他用户的权限实验,以此来解开目录权限的神秘面纱。在此我分别设定了三种情况,看看当某个目录/testdir对其他用户user1仅没有R,W,X权限时,其他用户对此目录有什…

    Linux干货 2016-08-08
  • shell中的if else语句与文件查找find浅析

    shell中的if else语句与文件查找find浅析    上篇文章中我们讲述了shell脚本编程的初步入门,其中讲到了shell编程中的顺序执行,顺序执行时一种简单的小脚本,如果在编辑脚本的时候遇到要做出条件判断执行的时候要怎么办呢?我们学习过if之后你会发现这会很简单。if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。 S…

    Linux干货 2016-08-16