文本处理以及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
下一篇 2018-03-18

相关推荐

  • Linux发展史

    Linux发展史 摘要:因为学习linux过程中对整个linux发展历史只有一些模糊的理解,以本文来对linux发展史进行梳理来加深学习。   一、linux是什么 linux就是一套操作系统,如下图操作系统就是内核与系统调用接口那 Linux只是一套操作系统并不包含其他应用程序。 Linux提供了一个完整的操作系统当中最底层的硬件控制和资源管理的…

    Linux干货 2016-10-14
  • Linux基础小模块

    1.基础知识小块:shell 由shell程序的自带命令:即为内置命令(builtin) 独立的可执行程序文件、文件名 :即为外部命令  [root@localhost~]#ls      ~用户当前所在目录  #:命令提示符(管理员帐号root)  $:普通用户   &nbsp…

    Linux干货 2016-08-10
  • iptables练习

    iptables练习 一、COMMAND 1、列出所有链的规则:iptables -L ,显示某条链的规则就是iptables -L INPUT 详细信息:iptables -vnL 2、清楚所有链的规则 :iptables -F 3、设置默认规则策略:iptables -P INPUT DROP,iptables -P OUTPUT DROP , ipta…

    Linux干货 2016-12-20
  • shell脚本清空系统message日志

      1 #/bin/bash   2 #此脚本用来清空系统message日志文件   3 #author:wyf date:16/10/30   4 LOG_DIR=/var/log   5 ROOT…

    Linux干货 2016-10-30
  • 系统自动化安装的实现及SELINUX的设置

    系统的自动化安装     anaconda:系统安装程序         tui:基于图形库curses的文本窗口         gui:图形窗口     装载根文件系统,并启动…

    Linux干货 2016-09-16
  • Linux_创建文件系统及挂载文件系统流程详解

    Linux 创建文件系统及挂载文件系统流程详解 摘要:本文对新增硬盘,切割硬盘,创建硬盘分区,为硬盘分区创建文件系统,以及加载文件系统的流程做总结性论述;主要是为初学者弄清楚这一操作过程;本文涉及fdisk、mkfs、mount … … 等工具;对/etc/fstab 进行了解说;还有磁盘扫描工具fsck 等介绍; +++++++++…

    Linux干货 2016-01-18