文本处理及正则表达式

本文深入探讨了Linux系统中的文本处理工具,包括文件查看、统计、排序、uniq、grep、sed和正则表达式。重点介绍了如何通过grep和正则表达式取出IP地址,并展示了在shell脚本中进行文本处理和算术运算的方法。同时,还涵盖了vim编辑器的基本操作和使用,以及如何在vim中定制工作特性。
摘要由CSDN通过智能技术生成

title: 文本处理及正则表达式
date: 2018-10-14 18:18:18
tags:

  • VIM
  • Find
  • Sed
  • 正则表达式
  • shell脚本

文本处理及正则表达式

文件查看

文件查看命令:
cat,tac,rev
cat [OPTION]… [FILE]…
-E:显示行结束符$
-n:对显示出的每一行进行编号
-A:显示所有控制符
-b:非空行编号
-s:压缩连续的空行成一行
tac
rev
文件查看
more: 分页查看文件
more [OPTIONS…] FILE…
-d: 显示翻页及退出提示
less:一页一页地查看文件或STDIN输出
查看时有用的命令包括:
/文本搜索文本
n/N跳到下一个或上一个匹配
less命令是man命令使用的分页器

显示文本前或后行内容*********************************************

head [OPTION]… [FILE]…
-c #: 指定获取前#字节
-n #: 指定获取前#行
-#:指定行数
tail [OPTION]… [FILE]…
-c #: 指定获取后#字节
-n #: 指定获取后#行
-#:同上
-f: 跟踪显示文件fd新追加的内容,常用日志监控
相当于–follow=descriptor
-F: 跟踪文件名,相当于–follow=name --retry
tailf类似tail –f,当文件不增长时并不访问文件
###按列抽取文本cut和合并文件paste***************************************CUT
cut [OPTION]… [FILE]…
-d DELIMITER: 指明分隔符,默认tab
-f FILEDS:
…#: 第#个字段
…#,#[,#]:离散的多个字段,例如1,3,6
…#-#:连续的多个字段, 例如1-6
混合使用:1-3,7
-c按字符切割
–output-delimiter=STRING指定输出分隔符
cut和paste
显示文件或STDIN数据的指定列
cut-d:-f1/etc/passwd
cat /etc/passwd|cut-d:-f7
cut-c2-5/usr/share/dict/words
paste 合并两个文件同行号的列到一行
paste [OPTION]… [FILE]…
-d 分隔符:指定分隔符,默认用TAB
-s : 所有行合成一行显示
示例:
paste f1 f2
paste -s f1 f2

收集文本统计数据wc*****************************************WC

计数单词总数、行总数、字节总数和字符总数
可以对文件或STDIN中的数据运行
wcstory.txt
392371901story.txt
行数字数字节数
常用选项

-l只计数行数
-w只计数单词总数
-c只计数字节总数
-m只计数字符总数
-L显示文件中最长行的长度

文本排序sort

把整理过的文本显示在STDOUT,不改变原始文件
sort[options]file(s)
常用选项

-r执行反方向(由上至下)整理
-R随机排序
-n执行按数字大小整理
-f选项忽略(fold)字符串中的字符大小写
-u选项(独特,unique)删除输出中的重复行
-t c选项使用c做为字段界定符
-k X选项按照使用c字符分隔的X列来整理能够使用多次

uniq

uniq命令:从输入中删除前后相接的重复的行
uniq[OPTION]… [FILE]…
-c: 显示每行重复出现的次数
-d: 仅显示重复过的行
-u: 仅显示不曾重复的行
注:连续且完全相同方为重复
常和sort 命令一起配合使用:
sort userlist.txt | uniq-c

比较文件

比较两个文件之间的区别
difffoo.conffoo2.conf
5c5
< use_widgets=no
.>use_widgets=yes
注明第5行有区别(改变)

取出IP地址的几种方法: *************************************(重点)

ifconfig | sed -r ‘2!d;s/.inet (addr:)?//;s/ .//’ 6和7通用的取出IP地址
ifconfig eth0 | head -2|tail -1| tr -dc '[0-9]. ’ |tr -s ’ ’ |cut -d" " -f2 6系统上
ifconfig eth0|sed -n ‘2p’|sed ‘s@.inet @@’|sed ‘s@ netmask.$@@’ 提取出7上的IP地址,其中@@为分隔符
ifconfig ens33|sed -nr '2s/.t (.) net.
/\1/gp’ 扩展的正则表达式取出IP,()为分组,只有一个括号,所以后面写1
ifconfig ens33|sed -nr '2s/(.t) (.)( net.)/\2/gp’ 扩展的正则表达式取出IP,()为分组,有三个括号,所以后面写2留第二个
ifconfig | sed -nr "s/.inet (.
) netmask./\1/p" | head -n 1 取出7的IP
ifconfig | sed -nr "s/.inet (.
) netmask.*/\1/p" 取出7的三个网卡IP

查询系统信息 ***********************************************重点

…#RED is content color
…#依次显示出
…#系统版本
…#内核版本
…#CPU型号
…#内存大小
…#最大磁盘利用率
…#hostname
…#IP地址

RED="\033[1;31m"
COLOREND="\033[0m"
echo -e “OS version is R E D ‘ c a t / e t c / c e n t o s − r e l e a s e ‘ RED`cat /etc/centos-release` REDcat/etc/centosreleaseCOLOREND”
echo -e “kernel version R E D ‘ u n a m e − r ‘ RED`uname -r` REDunamerCOLOREND”
echo -e “The cpu type is KaTeX parse error: Double superscript at position 42: … name'|tr -s ' '̲|cut -d: -f2`COLOREND”
echo -e “The memory is KaTeX parse error: Double superscript at position 31: …ep Mem|tr -s ' '̲ ':' |cut -d: -…COLOREND”
echo -e “The max disk used is R E D ‘ d f ∣ g r e p / d e v / s d ∣ t r − s &quot; &quot; &quot; : &quot; ∣ c u t − d : − f 5 ∣ s o r t − n r ∣ h e a d − 1 ‘ RED`df |grep /dev/sd|tr -s &quot; &quot; &quot;:&quot;|cut -d: -f5|sort -nr|head -1` RE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值