文本处理以及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

相关推荐

  • 数据库简介和简单操作

    数据库 数据库是数据的汇集,它以一定的形式存储在存储介质上 数据库的发展史 萌芽阶段:文件系统,使用磁盘文件来存储数据 初级阶段:第一代数据库,出现了网状模型、层次模型的数据库 中级阶段:第二代数据库,关系型数据库和结构化查询语言 高级阶段:新一代数据库,“关系-对象”型数据库 数据库管理系统和文件管理系统 文件管理系统的缺点是: 编写应用程序不方便 数据冗…

    2017-12-04
  • 文本查找之find组合拳

    find命令不仅能帮助我们在数目众多的文件中快速找到满足条件的文本,我们还能通过find处理动作对查找到的文件进行进一步的处理。 一、find的特点:               遍历查找,因此查找速度略慢   &nbs…

    Linux干货 2016-08-15
  • Linux发展史

    前言     Linux属于类Unix中的一个当下比较流行的操作系统,占领了服务器大部分江山。作为一个专业复杂的操作系统,了解其发展过程是很有必要的。如果要讲linux的历史,肯定是从三个团体开发Multics系统说起,贝尔实验室离开Multics项目后,Tompson和他的同事一起创造了unix,而在unix的各种分支中BSD则是迅速发…

    Linux干货 2016-10-14
  • LINUX–命令的格式、类型、别名的概述及运用

    命令格式       COMMAND [OPTIONS…] [ARGUMENTS..]      [OPTIONS..] 选项:用于启用或关闭命令的某个或某些功能                &n…

    2017-05-21
  • Python之入门篇

    一、环境准备 环境准备 –> pyenv (安装python解释器,管理Python版本,管理python虚拟环境) https://github.com/pyenv/pyenv https://github.com/yyuu/pyenv-installer # yum -y install git # curl -L https://ra…

    Linux干货 2017-02-05
  • N26-第六周博客作业

    请详细总结vim编辑器的使用并完成以下练习题 VIM有三种模式,分别为标准模式、输入模式、末行模式 模式切换:          标准模式——输入模式:i          标准模式——末行模式:: …

    Linux干货 2017-07-08