Linux-awk和shell编程初步
1 awk
格式: awk -选项 '处理' 输入
awk -F : '{print $1}' file
-F指定分隔符, 默认是空格
$1 分割后的第一部分
$0 获得所有部分
NF 表示以分隔符分割后一共有多少段
$NF 最后一段
NR 显示行号
通过NR来控制输出的行
通过正则表达式来控制输出
注意要使用双引号
注意要使用==或者>=等比较符号
如果要传入参数 可用-v来限定
针对行的正则表达式
其中~用于指定针对每行的某一部分进行正则匹配
2 补充命令
1 sort
可以将输入的内容按字典顺序排序, 但是只是针对行的排序
2 uniq
去除重复的行
uniq -c
显示重复行的信息
3 cut
效果等同于awk
-d 指定分割符
-f 指定获得的分组
cut -d : -f1.3
4 du
du -sh 路径
查看文件或者文件夹大小
5 find
find 查找点 -type 文件类型 -name 文件名(一般用通配符) -size 文件大小
文件类型 常用的有f 普通文件
-size可以由多个 -表示小于 +表示大于
6 scale和bc
echo 'scale=2;30/100' | bc -l
3 shell编程
3.1 shell的基本
shell脚本可读, 必须要有可执行权限
shell脚本是从上往下逐行解释执行的
shell脚本的第一行往往是
#! shell解释器文件路径
#! /bin/bash
shell的注释是以#开头的
shell脚本的输出
echo 输出字符串等
echo "hello world"
shell脚本一般是以.sh结尾的
执行shell脚本的方法
./shell脚本名
./hello.sh
shell在赋值的时候等号前后不能有空格, 这个别的语言不同
变量的定义之后 可以用unset 变量名, 取消该变量
$HISTSIZE 查看history的缓存最大数量
$PS1 用于设定命令号首部固定的样式模式
在shell中, 要想执行运算最好用[]包裹起来, 且调用变量的值的时候要用$
((可以在里面直接运行数学运算))
3.2 条件测试
测试结果用$?表示 0表示正确 1表示错误
通过echo $?来输出显示
数值测试
[ 数值1 关系运算符 数值2 ]
关系运算符有:
-eq (equal) 相等
-ne (not equal) 不相等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
字符串测试
[ 关系运算符 字符串 ]
[ 字符串1 关系运算符 字符串2 ]
关系运算符
= 相等
!= 不相等
-z 为空
-n 不为空
# [ "abc" = "abc" ]
# echo $?
0 # [ "abc" = "cba" ]
# echo $?
1
文件状态测试
[ 关系运算符 字符串 ]
运算符
条件测试的逻辑操作符
-a 逻辑与
-o 逻辑或
! 逻辑否
3.3 控制结构
shell的控制结构有if-then-else, case, for, while, until
if-then-else的基本语法格式如下
case的基本语法格式如下
例子
for循环的基本语法格式
例子
expr命令计数器
expr 数值1 运算符 数值2
常用的有+ - \* /四种
while
until的结果与while一致
3.4 脚本参数交互
运行时传入参数
用户交互
read 变量1 [变量2...]
最新文章
- oracle 密码过期处理
- xhEditor用法
- Spring 事务知识
- 数据库---MySQL常用函数总结
- 链表——PowerShell版
- Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
- Hadoop 2.2 YARN分布式集群搭建配置流程
- mysql:ip地址连接
- 动态设置bootstrapswitch状态
- golang运算与循环等
- sklearn.linear_model.LinearRegresion学习
- node.js http接口调试时请求串行特性分析
- 一个时间上的比较 if else
- HDU 6373(斜面上小球弹跳 运动分解)
- bzoj1912 树形dp求直径(新写法),求直径的两端点
- tcp timestamps
- Docker删除镜像报错
- CCF CSP 201503-2 数字排序
- MySQL 慢查询日志工具之pt-query-digest
- Python中的推导式(列表推导式、字典推导式、集合推导式)