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

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 22:05
下一篇 2016-08-07 22:05

相关推荐

  • 基于heartbeat v1+ldirectord实现LVS集群高可用

    前言 高可用集群,High Availability Cluster,简称HA Cluster,是指以减少服务中断时间为目的的服务器集群技术。通过上文可以看出,LVS集群本身并不能实现高可用,比如Director Server不能检测Real Server的健康度,一旦其中一台或全部Real Server宕机,Director Server还会继续转发请求,…

    Linux干货 2015-06-08
  • 马哥教育网络班22期第二周课程练习1-未闻花名

    1、Linux管理文件和目录的命令 命令 功能 命令 功能 pwd 显示当前目录 ls 查看目录下的内容 cd 改变所在目录 cat 显示文件的内容 grep 在文件中查找某字符 cp 复制文件 touch 创建文件 mv 移动文件 rm 删除文件 rmdir 删除目录 1.1 pwd命令 该命令的英文解释为print working directory(打…

    Linux干货 2016-08-29
  • httpd功能配置之https

       HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS使用443端口进行通信。    …

    Linux干货 2016-03-13
  • raid5 阵列

    1 fdisk 分区sdb2,sdd1,sde1, 2  新建raid5 [root@localhost ~]# mdadm -C /dev/md5 -a yes  -l 5  -n 3 -x 1 /dev/sdd1 /dev/sde1  /dev/sdf  /dev/sdb2  3   …

    Linux干货 2017-04-25
  • shell位置变量解析

    什么是位置变量 在脚本代码中调用通过命令行传递给脚本的参数。 有哪些位置变量 $1,$2,…: 对应第1、第2等参数,shift [n]换位置 $0:命令本身 $*:传递给脚本的所有参数,全部参数合为一个字符串 $@:传递给脚本的所有参数,每个参数为独立字符串$#:传递给脚本的参数的个数    &nbsp…

    Linux干货 2016-08-15
  • LVS负载均衡WordPress

    LVS:        LVS是四层协议的开源负载均衡器,工作在netfilter框架INPUT链中,它根据不同的算        法将用户的请求调度给后端服务器,它不受sockt套接字文件限制,性能比nginx七层       …

    Linux干货 2017-05-18