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

相关推荐

  • 计算1000以内的总质数个数

    #include <stdio.h> int main() { int micro[500]; // 质数保存素组 int number = 0; // 质数个数 micro[number++] = 2; // micro[0]=2 micro[number++] = 3; // micro[1]=3, number=2 unsigned lon…

    Linux干货 2017-03-22
  • N25-第三周作业

      列出当前系统上所有已经登陆的用户的用户名,注意:同一个用户登陆多次,则只显示一次即可。     2.取出最后登陆到当前系统的用户的相关信息。     3.取出当前系统上被用户当作其默认shell的最多的那个shell.     4.将/etc/password中的第三个字段数值最大的后…

    Linux干货 2016-12-19
  • Mysql 多表联合查询效率分析及优化

    1. 多表连接类型 1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','  如:  SELECT * FROM table1 CROSS JOIN table2  &nb…

    Linux干货 2015-04-13
  • linux文件管理命令与命令行展开

    linux文件管理命令与命令行展开

    2017-12-11
  • 软链接和硬链接详解

    软连接和硬链接图解 硬链接 符号链接 软链接和硬链接详解 软链接和硬链接详解 Linux下的链接文件有点类似于Windows的快捷方式,但又不完全一样。链接文件有两种:一种是硬链接,另一种是符号链接(又称软链接)。 UNIX文件系统提供了一种将不同文件链接至同一个文件的机制,我们称这种机制为链接。它可以使得单个程序对同一文件使用不同的名字。这样的好处是文件系…

    Linux干货 2016-09-06
  • haproxy负载均衡两个后端httpd和mysql

    前端主机:172.16.71.1,后端主机:172.16.71.4和172.16.71.5 前端主机安装haproxy yum install haproxyvim /etc/haproxy/haproxy.cfgglobal    log         127.0.0.1 local2 &nbs…

    Linux干货 2017-02-12