shell编程之字符命令
来源:互联网 发布:java数组调用方法 编辑:程序博客网 时间:2024/05/01 21:44
摘要:主要介绍字符处理类命令
选取命令:grep cut
awk sed 工具
排序命令 sort 及 uniq wc
文件比较工具 diff cmp
双向重导向 tee
字符转换类命令...
....
字符处理类命令(grep,cut,awk,sed,sort,uniq...)
1.选取命令(grep cut)
1.grep "字符串" 文件名(查找文件包含字符串的行)
-v 排除指定字符串的行
-i 忽略大小写
-n 输出对应行号
-c 计算找到'搜索字串'次数
--color=auto 关键字颜色标出(可在 ~./bashrc 添加 alias grep='grep --color=auto'永久生效)
eg:grep "/bin/bash" /etc/passwd | grep -v "root" 列出所有普通用户(行)
2.cut 文件名 字段提取 截取列(这个命令对于分割符比较较真,只能截取规律行的列,对于多空格连接数据不易处理 就要用下面 awk 工具处理)
-f 列号 提取第几列
-d 分隔符 指按照指定的分隔符分割列(默认Tab)
-c nu1-(nu2) 提取第nu1以后(到nu2)所有字串
eg:列出所有普通用户
2.awk工具
1.printf '输出类型输出格式' 输出内容 标准输出(学习awk得先了解print使用)
输出类型
%ns:输出n个字符串
%ni:输出n个整数
%m.nf:输出m个整数,n个小数的浮点数
输出格式
\a:输出警告声
\b:输出退格键
\f:清屏
\r:回车
\t:水平输出退格键(Tab)
\v:垂直输出退格键(Tab)
2.awk命令 提取每列第几个变量
1.awk '条件1{动作1} 条件2{动作2}...' 文件名
条件一般用关系表达式(BEGIN{}首先执行 END{}最后执行 ">=<")
动作格式化输出 流程控制
注意:awk 提取相应列字段 是把文件每行整行先读入 再每个字段对应$1,$2,$3... 判断条件,成立执行动作。
模式匹配 awk '/正则表达式/{}' 匹配含有正则表达式的行
eg:查看分区硬盘已用百分比
eg: awk提取默认过程,BEGIN作用(FS内置变量 = ":" 指定分隔符)
3.sed工具
将数据进行选取、替换、删除、新增
1.sed [选项] '[动作]' 文件名
选项:
-n 把经过sed处理的行输出到屏幕。默认文件全输出
-e 允许对输入数据应用多条sed命令编辑(可一次执行多次动作 '动作1;动作2')
-i sed修改结果直接修改读取数据的文件,不向屏幕输出
动作:
a 追加,在当前行后添加一行或多行 格式 '行范围a 内容'
c 行替换,c后数据的字符串替换原数据
i 插入,在行前插入一行或多行
d 删除,指定行 格式 '行范围d'
p 打印,输出指定行
s 字串替换,用字符串替换另一字符串 格式 '行范围s/旧字串/新字串/g'
eg:
4.排序命令(sort)
1.sort 文件名
-f 忽略大小写
-n 以数值型排序,默认字符串型
-r 反向排序
-t 指定分割符,默认制表符
-k n[,m] 按照指定字段范围排序。从第n字段开始,m字段结束,默认行尾
-b 忽略最前面的空白字符部分
-M 以月份名排序
2.uniq 重复数据仅显示1个
-i 忽略字符大小写
-c 进行计数
eg:
3.wc 文件名
-l 行数
-w 单词
-m 字符数
5.文件比较工具(diff,cmp)
1.diff file-old file-new 用于比较相近文件区别(主要是区分新旧文件)(以行为单位)(注:可用“-”代表前面一文件 其中“-”是上一个管道命令输出做为这次输入)
-b 忽略多几个空格
-B 忽略空白行区别
-i 忽略大小写
eg:
2.patch [] <file.patch (filepatch由 diff file1 file2 >file.patch(制作补丁) 产生)
-pN 取消几层目录(如果两文件(新旧版)在同一目录 则N=0)
-R 代表还原,将新的文件还原旧文件
[patch -pN < patch_file(补丁)<==更新]
[patch -R -pN < patch_file<==还原]
3.cmp file1 file2 比较文件区别(以字节为单位)
-s 将所有不同列出(默认只找第一个不同字节)
6.双向重导向(tee)
tee file(一般格式:命令1(有输出)| tee file | 命令2) tee把命令1输出存入file后,数据还是可以利用做命令2的输入(不加不可以)
-a 累加进入file(无则会覆盖原文件)
eg:
7.字符转换命令(tr,col,join,paste,expand)
1.tr '字串1' '字串2' 把字串1全变为字串2
-d '字串' 删除字串
eg:
2.join file1 file2 整合文件1和文件2的数据 对比(第一个)字段(空白字符分割)相同放一行,并把比较的字段放首列
-t 指定分割符
-i 忽略大小写
-1 nu1 -2 nu2 指定文件1的字段1和文件2字段2分析
eg:
3.paste file1 file2 把文件1和2直接对应行贴一起
-d 两文件指定分割符(默认Tab)
- 如果file用-代替则代表是上级输入
4.col -x 把 文件中的 tab键 换成 空白键
5.expand 把tab转换空白键
-t num 一个tab转化成多少个空格键(默认8)
8.文件分割命令(split)
split file (prefile)
-b num(b/k/m) 与分割成文件大小
-l num 以行数分割
prefile:分区文件分了后启的名字(prefileaa,prefileab)
(prefile* >>file 可还原)
9.参数代换:xargs (很多命令不支持管道命令,通过前加xargs来引用前一命令输出当输入)
10.文件打印准备:pr
0 0
- shell编程之字符命令
- Shell编程-字符处理命令
- shell编程-字符截取命令
- shell编程-字符处理命令
- shell编程之 .命令
- Shell编程-字符截取命令-cut命令
- Shell编程-字符截取命令-printf命令
- Shell编程-字符截取命令-awk命令
- Shell编程-字符截取命令-sed命令
- Shell编程之特殊字符
- shell字符截取命令之cut命令
- shell字符截取命令之awk命令
- Shell编程之 “test”命令
- shell编程之grep命令
- Linux学习——shell编程之正则表达式和字符处理命令
- shell命令的组成 之 特殊字符
- Linux学习---shell编程(06-字符截取命令)
- Linux学习---shell编程(10-字符处理命令)
- mui初级入门教程
- PHP基本介绍
- memcache详解
- 2016.11.5GDOI模拟总结
- CODEVS 1077多源最短路
- shell编程之字符命令
- 设计模式之单例模式
- Android-----SimpleAdapter创建ListView的实例,及值得注意的一些细节问题
- Android开发 获取屏幕宽高及尺寸的方法
- HDU 1215 七夕节
- effective C++之模板元编程
- SQL case when语法
- HDU 1214 圆桌会议(思维)
- linux 查看内存