Linux Shell编程-字符截取和处理命令
一 cut命令 
cut 选项 文件名 
-f 列号,列号 :提取第几列,多个列用,分隔 
-d 分隔符:按照指定分隔符分隔列
比如有一个文件student.txt 

注意,每个列直接用的TAB键
cut -f 2,3 student.txt

截取第2列和第3列
cut -d “:”-f 1,3 /etc/passwd 

cut命令的局限 


如果想以” “空格来分割,截图第3列,是截图不到的,因为第一列和第二列直接空格特别多。
二 printf命令 
printf ‘输出类型输出格式’ 输出内容 
输出类型 
%ns 输出字符串,n是数字,代表输出几个字符 
%ni 输出整数,n是数字,代表输出几个数字 
%m.nf 输出浮点数,%8.2f 输出6位整数和2位小数

来看例子 
printf %s 1 2 3 4 5 6 
 
这样,虽然参数每个数字之间有空格,但是打印出来完全连在一起
printf %s %s %s 1 2 3 4 5 6 

如果不加单引号,那么后面两个%s会被当成字符串
printf ‘%s %s %s’ 1 2 3 4 5 6 
 
这样输出类型中3个%s,那么接下来的内容就3个一组加空格输出
printf ‘%s %s %s\n’ 1 2 3 4 5 6 
\n代表换行 
printf ‘%s’ $(cat student.txt) 
不调整格式输出student.txt文件的内容 

如果想调整格式输出 

注:在下面要讲的awk命令的输出中支持print和printf命令
print命令会在每个输出之后自动加入换行符
printf命令不会自动加入换行符,需要手工加入
三 awk命令 
awk ‘条件1{动作1} 条件2{动作2}…’ 文件名 
条件 
一般使用关系表达式作为条件 
x>10 
x>=10 
x<=10 
动作 
格式化输出 
流程控制语句 
下面举例来看 


截取第2列和第6列


截取第1列和第3列,这里我们看到,虽然df -h的输出结果是空格很多,但是依然可以截取,这就是awk比cut强大的地方

在截图第2列和第6列之前加上了一段描述的语言

在结尾加上一段描述语言

在开始的时候用FS指定分隔符
 
判断第6列大于87,然后截图第2列
四 sed命令 
sed主要是用来将数据进行选取,替换,删除,新增的命令 
sed 选项 ‘动作’ 文件名 
选项: 
-n: 一般sed命令会把所有内容输出到屏幕,如果加了-n,只会把sed命令处理的行输出到屏幕 
-e: 允许对输出数据应用多条sed命令编辑 
-i: 用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出

