文本处理以及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)
上一篇 2018-03-18 10:04
下一篇 2018-03-18 14:50

相关推荐

  • 马哥教育21期网络班—第三周课程+练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 who |cut -d" " -f1 |sort -u 2、取出最后登录到当前系统的用户的相关信息。 id `who | tail -n …

    Linux干货 2016-07-12
  • 日志分析工具Awstats实战之Nginx篇-分析结果动态化

    上一篇博文“分析工具Awstats实战之Nginx篇-分析结果静态化”介绍了如何将awstats的日志分析信息用静态页面来进行显示,不过显示效果肯定没有动态的好啦。本篇博文将带大家一起来部署动态的分析结果查阅。 环境: CentOS 6.4 ip:192.168.1.113 域名:www.sunsky.com(server和client都通过hos…

    Linux干货 2016-08-15
  • Linux Sysadmin–part3

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现 #!/bin/bash for i in `cut -d’:’ -f7 /etc/passwd`;do if [ $i == “/sbin/nologin…

    2017-09-19
  • 语言的歧义

    语言是人与人相互沟通的途径,而计算机语言则是人和计算机沟通的途径。就算是任何再完美的自然语言都会有歧义,但是又是什么让人和计算计算机间产生了歧义呢?下面这篇文章来自Gowri Kumar的Puzzle C一文。我做了一些整理,挑选了其中的一些问题,并在之后配上相应的答案(这些答案是我加的,如果需要原版的答案可以直接和本文作者Gowri Kumar联系,作者的…

    Linux干货 2016-05-08
  • 马哥教育网络班21期第6周课程练习

    一、vim编辑器的使用 二、练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@www ~]# cp /etc/rc.d/rc.sysinit /tmp [root@www ~]# l…

    Linux干货 2016-08-15
  • shell脚本编程初步入门

    shell脚本编程初步入门    说到shell脚本编程,那我们就来先看下shell,shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统内核的一部分,但它调用了系统核…

    Linux干货 2016-08-15