Linux Shell编程 - 字符截取命令
01、字段提取命令 cut => cut [选项] 文件名
-f 列号: 提取第几列
-d 分隔符:按照指定分割符分割列
例如:cut -f 2,4(列号;,逗号可以多行提取) student.txt
cut -d “:” -f 1,3 /etc/passwd
02、格式化输出命令 printf 命令 => printf ‘输出类型输出格式’ 输出内容
输出类型:
%ns:输出字符串。n 是数字指代输出几个字符
%ni:输出整数。n 是数字指代输出几个数字
%m.nf:输出浮点数。m是整数,n是小数
输出格式:
\a:输出警告声音
\b:输出退格键,删除键
\f:清楚屏幕
\n:换行
\r:回车
\t:水平输出退格键
\v:垂直输出退格键
03、awk命令 => awk ‘条件1{动作1}条件2{动作2}....’ 文件名 条件 (Pattern)
动作(Action):
格式化输出
流程控制语句
例如:awk ‘ { printf $2 "\t" $6"\n" } ’ student.txt
$2、$6:代表第几行
BEGIN => awk ‘BEGIN{print "test !!"} { printf $2 "\t" $6"\n" } ’ student.txt
BEGIN 会在所有的数据处理完之前执行
例如:FS内置变量
cat /etc/passwd | grep "/bin/bash" | \ awk 'BEGIN {FS=":"} {printf $1 "\t" $3 "\n"}'
END => 相反 :所有的数据处理完之后执行
04、sed 命令 :是一种几乎包括在所有UNIX平台(包括Linux)的轻量级流编辑器。
sed 主要是用来将数据进行选取、替换、删除、新增的命令。
sed [选项] -‘[动作]’- 文件名
-n:一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处理的行输出到屏幕
-e:允许对输入数据应用多条sed命令编辑
-i:用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出
动作:
打印,输出指定行:sed -n ‘2p’ student.txt
删除:sed “2,4d” student.txt => 删除2 -- 4行的数据,但是不修改文件本身
追加:sed ‘2a Hello’ student.txt 在第二行后追加 hello
插入:sed ‘2i wrold Hello ’ student.txt 在第二行前插入两行数据
字符串替换:sed -i ‘2s/99/55/g’ student.txt 把第2行的99替换成55
加上 -i:连同文件一起修改,不加只是对打印修改
加-e:sed -e ‘s/Liming/ads/g;s/Gao/ads/g’ student.txt
同事把“Liming” 和 “Gao” 替换为ads
05、排序命令 => sort [选项] 文件名
选项:
-f:忽略大小写
-n:以数值型进行排序,默认使用字符串型排序
-r:反向排序
-t:指定分隔符,默认是制表符
-k n[,m]:按照指定的字段范围排序。从第n字段开始,m字段结束(默认到行尾)
例如:sort -t ":" -k 3,3 /etc/passwd (一般不需要)
指定分隔符是 “:”,用第三字段开头,第三字段结尾排序,就是只用第三字段排序(用户UID排序)
06、统计命令 => wc [选项] 文件名
选项:
-l:只统计行数
-w:只统计单词数
-m:只统计字符数