1、提取列命令:cut
cut [选项] 文件名
选项:
-f #提取第几列
-d 分隔符 #按照指定分隔符对列进行分割(默认以 Tab 制表符作为分隔符)
【==> grep提取行,cut提取列】
2. 格式化输出命令:printf
printf '输出类型输出格式' 输出内容
printf '输出类型 输出格式' 输出内容
输出类型:
%ns 输出字符串。n表示输出的字符数
%ni 输出整数。n表示输出的数字个数
%m.nf 输出浮点数。m表示输出的总位数(整数位+小数位),n表示输出的小数位数,m-n为整数位数
输出格式:
\a 输出警告声音(限定本地终端)
\b 输出退格键(Backspace)
\f 清除屏幕
\n 换行
\r 回车
\t 水平制表符(Tab键)
\v 垂直制表符(Tab键)
echo与printf比较:
echo会按照输入的格式进行输出显示,printf若不进行格式化控制则不会按照输入的格式输出,echo相当于是在printf的基础上进行了改善的输出方式
在awk命令输出时支持print和printf命令
print与printf比较:
print会在每个输出之后自动加上一个换行符(Linux默认没有print命令),printf是标准的格式输出命令,不会自动加入换行符,需要通过手工方式加入换行符
3. 提取列/字段命令:awk
1)awk使用规则
提取列/字段:条件符合则执行对应动作;无条件时都会执行动作
awk '条件1{动作1}条件2{动作2}...' 文件名
条件(Pattern):
一般使用关系表达式作为条件
动作(Action):
格式化输出(如:printf输出)
流程控制语句(如:for循环)
2)awk处理过程描述:
==> 逐行处理数据
Step1-读取第1行:首先读取文档中的第一行数据
Step2-判断条件:若满足条件,则执行动作;本例为无条件,即所有都满足执行
Step3-建立变量:将文件名student.txt赋值给1、3、$4分别对应作为第1行的第1、2、3、4个字段
Step4-执行动作:输出第2个字段、水平制表符、第4个字段、换行符
Step5-读取第2行,判断条件,执行动作
Step6-读取第3行,...
...
StepN-直至将文档中的所有行都读取完成,执行完成动作为止
3)awk与cut对比:
- awk对文档中按每个字段提取,逐行处理数据,不需要受分隔符的限制,使用范围相对更广;cut对文档中按列提取,严格收分隔符限制
- 文档中的数据,若有规范分隔符,cut和awk均可使用;若无规范的分隔符(如:不同长度的空格符),则建议使用awk按照字段提取
4、文本内容替换命令:sed
sed:是一种几乎包括在所有Unix平台(包括Linux)的轻量级流编辑器。sed主要用来将数据进行选取、替换、删除、新增的命令
sed [选项] '[动作]' 文件名
选项:
-n 把经过sed命令处理的行进行输出,不加"-n"则会在sed处理数据的基础上再叠加输出所有数据
-e 允许对输入数据应用多条sed命令编辑
-i 不加"-i"只是临时修改(把修改的效果显示在屏幕上,实际的文件并未变化);
加"-i"则会修改到实际的文件内容,此时需要防止误操作;不输出到屏幕
动作:
p 打印整行。输出指定的行,如:'np',表示第n行
d 删除整行。删除指定的行
i 行前插入。在当前行的前面插入一行or多行
a 行后追加。在当前行的后面添加一行or多行
c 替换整行。用"c"后面的字符串替换原数据行
s 替换字串。用一个字符串替换另一个字符串;格式:"行范围s/旧字串/新字串/g"
5、排序命令:sort
sort [选项] 文件名
选项:
-f 忽略大小写
-n 以数值型进行排序(默认使用字符串型排序)
-r 反向排序(从大到小)
-t 指定分隔符(默认分隔符是制表符)
-k n[,m] 按照指定的字段范围排序:从第n个字段开始到第m个字段结束
(不加'[,m]'则默认到整个行尾)
6、统计命令:wc
wc [选项] 文件名
选项:
-l 只统计行数
-w 只统计单词数
-m 只统计字符数
练习
1、cut命令、awk命令提取列/字段
提取挂载点在根目录的一行数据,提取该行数据中 Use%字段值,对应位置变量:$4,#对以上提取值处理:以 "%"为分隔符提取第 1列数据
【FS内置变量】(内置分隔符):
【关系运算符】读取成绩单,判断并输出80分及以上的学生Name($2),但不包含Name本身名称
2、sed命令操作文本内容
查看、删除整行
行前插入、行后追加
替换整行、替换字符串
3、统计命令:wc
统计当前目录下的文件个数
网友评论