Shell | 基础知识点实例整理(二)

2019-02-28  本文已影响48人  Root_123

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赋值给0,1、2、3、$4分别对应作为第1行的第1、2、3、4个字段
Step4-执行动作:输出第2个字段、水平制表符、第4个字段、换行符
Step5-读取第2行,判断条件,执行动作
Step6-读取第3行,...
...
StepN-直至将文档中的所有行都读取完成,执行完成动作为止

3)awk与cut对比:

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
统计当前目录下的文件个数


上一篇下一篇

猜你喜欢

热点阅读