文本处理以及shell编程知识点

文本处理、shell

uniq
-d:仅显示重复过的行
-c:显示重复行的次数
-u:仅显示不曾重复的行
sed的高级应用:
数据先存放到保持空间,然后在进入模式空间进行处理,按照规则依次输出
awk
netstat -tan | awk ‘/^tcp/{state[$NF]++}END{for(i in state){print i,state[i]}}’
数组引用
若要遍历数组的每个元素,要是用for循环
for(var in array){for-body}
注意:var会遍历array的每个索引
split:
netstat -tan | awk ‘/^tcp\>/{split($5,ip,”:”);count[ip[1]]++}END{for(i in count){print i,count[i]}}’

常用的文本处理实例:
(一)、搜索IP地址
1、ifconfig eth0 | grep -o “\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}”
2、ifconfig eth0 | sed -n ‘2p’ | awk ‘{print $2}’
(二)、分区利用率
1、df -h | awk ‘{print $5}’ | awk -F ‘%’ ‘{print $1}’
2、df -h | tr -s ‘ ‘ | cut -d ‘ ‘ -f 5
\1:引用前面所匹配的内容 适用于\(\)分组所匹配到的内容
&:vim模式或者sed模式,引用前面所匹配的内容
sed ‘s/quiet/& net\.ifnames=0/’ /etc/default/grub
例如:添加用户bash、testbash、basher、nologin,找出当前系统中用户名和默认shell类型相同的用户
grep “\(^[[:alnum:]]\+\).*\1$” /etc/passwd

字符类
字符类 说明
[[:alpha:]] 小写及大写字母,等价于[a-zA-Z]
[[:alnum:]] 小写和大写字母及数字,等价于[a-zA-Z0-9]
[[:cntrl:]] 控制字符,如制表符(Tab)、换行符或反斜线
[[:digit:]] 数字0~9,等价于[0-9]
[[:graph:]] ASCII码从33~126之间的可打印字符
[[:lower:]] 小写字母,等价于[a-z]
[[:punct:]] 标点符号,包括问号、句号、逗号、冒号、分号、单引号、英文的重音符或中文的间隔号(`)、!、@、#、%、^、&、*、左右括号、左右中括号、左右大括号、正斜杠(/)、-、_
[[:upper:]] 大写字母,等价于[A-Z]
[[:space:]] 空白字符,包括空格、水平制表符、垂直制表符、换行、换页、回车
[[:xdigit:]] 十六进制字符,等价于[a-fA-F0-9]

通配符
元字符 作用
* 匹配0个或任意多个字符,也就是可以匹配任何内容
? 匹配任意一个字符
[] 匹配[ ]中任意一个字符
[-] 匹配括号中任意一个字符,-代表一个范围,例如:[a-z]代表匹配一个小写字母
[^] 逻辑非,表示匹配不是中括号内的一个字符,例如[^0-9]代表匹配一个不是数字的字符

shell编程
变量:
局部变量:生效范围是当前shell进程;对当前shell之外的其他shell进程包括当前shell的子shell无效
环境变量:对当前shell和子shell均有效
本地变量:只对当前shell进程的代码中有效
算数运算:
实现算数运算:
let var=算数表达式
var=$[算数表达式] 将算数表达式的结果赋值给var
变量作用域:
环境变量:当前shell以及子shell均有效
本地变量:当前shell以及函数内的变量均有效
局部变量:仅作用于函数体内部,当函数执行完成,局部变量会自动销毁失效
数组:
声明数组:declare -a array
-A array 声明关联数组
数组赋值:
array_name=(“value1” “value2″…)
引用数组元素:
${array[index]}
${array[@]} 数组所有元素
${array[*]}
${#array[*]}数组元素的个数

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/92622

(0)
SignalSignal
上一篇 2018-03-18 10:04
下一篇 2018-03-18 14:50

相关推荐

  • linux用户管理(一)

    作为一个专业的服务器发行版,CentOS上存在着n多个用户,作为一个专业的运维工程师,linux的用户管理和用户组的管理是做为一个SA必不可少的工作. 下面我们就先来谈谈linux中的用户管理: useradd可以在系统中新建一个用户 用法如下: useradd [选项] 用户名 常用选项: -u 指定用户的UID -g 指定用户的初始组ID -G…

    Linux干货 2017-04-03
  • 文件的权限小结

    主要是setfacl 和chown的总结

    Linux干货 2017-11-27
  • N26第六周博客作业

    请详细总结vim编辑器的使用并完成以下练习题 1、               复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#…

    Linux干货 2017-03-13
  • linux 系统日志管理

         在linux系统上面,系统可以记录从开机到当前系统上面何时发生了那些事情,并将其分类,分级别写到特定的日志文件当中,如系统自身产生的问题,用户登录信息,网络数据信息等等。我们可以根据这些日志信息来解决系统方面的错误,网络服务问题等等。日志对于安全来说,非常重要,它记录了系统每天发生的各种各样的事情,你可以通过它来检查错…

    2017-08-14
  • ☞{ 编译内核;自制linux; }

    编译内核、自制linux 自制简单的linux 前提约定 CentOS 6.8 , Kernel-2.6.32-642.el6.x86_64 基于GRUB – 0.97 / 分区与 boot 分区独立, /boot 分区 100M+ ,/ 根分区看具体需求,此处为 1G Vmware 12.1,新建一个Li…

    Linux干货 2016-09-15
  • Linux文件系统及文件管理相关命令

    一、Linux文件系统介绍: Linux文件系统叫做根文件系统(rootfs): root filesystem。文件系统从根目录下开始,用“ /”表示。文件和目录被组织成一个单根倒置树结构。文件系统分层遵循FHS(Filesystem Hierarchy Stantartd)。标准的Linux文件系统,文件名严格区分大小写。使用“/”分割路径。 …

    Linux干货 2016-07-29