1、cut基本使用
cut 使用场景:通常对数据进行行列的提取
语法:cut [选项] ...[file]
选项:
-d : 指定分隔符
-f : 指定截取区域
-c : 以字符为单位进行分割
注意:不加-d 默认为制表符,不是空格
eg:以':'为分隔符。截取出/etc/passwd的第一列跟第三列
cut -d ':' -f 1,3 /etc/passwd
eg:以':'为分隔符,截取出/etc/passwd的第一列到第三列
cut -d ':' -f 1-3 /etc/passwd
eg:以':'为分隔符,截取出/etc/passwd的第二列到最后一列
cut -d ':' -f 2- /etc/passwd
eg:截取/etc/passwd文件从第二个字符到第九个字符
cut -c 2-9 /etc/passwd
eg:比如领导想叫你截取linux上面所有可登陆普通用户
cat /etc/passwd | grep '/bin/bash' | cut -d ':' -f 1 | grep -v root
2、awk基本使用
awk : 一个非常强大的数据处理命令。支持条件判断,数组,循环等功能,与grep sed 称为Linux的三剑客
- awk的应用场景:
语法:awk '条件1{执行动作} 条件2{执行动作}...' 文件名
awk [选项]'条件1{执行动作} 条件2{执行动作}...' 文件名
printf : 格式化输出。不会自动换行
print : 打印出内容,默认会自动换行
%s : 代表字符串
\t : 制表符
\n : 换行符
eg:printf '%s\t%s\t%s\t%s\t%s\t%s\n' 1 2 3 4 5 6
- awk特殊要点
NR : 行号
$1 : 代表第一列
$2 : 代表第二列
$NF : 代表最后一列
df -h | awk 'NR==4 {print $1}'
df -h | awk '(NR>=2 && NR <=5){print $1}'
df -h | awk '{print $NF}'
-F : 指定分隔符
awk -F ":" '{print $1}' /etc/passwd
- BEGIN #在读取所有行内容前就开始执行,一般用来初始化操作
eg:
cat /etc/passwd | awk 'BEGIN {FS=":"} {print $1}'
df -h |grep -v 'Filesystem' | awk '{printf $1} {printf "文件系统使用率:"} {print $5}'
df -h |grep -v 'Filesystem' | awk 'BEGIN {printf "文件系统使用情况:\n \n"} {printf $1}
{printf "文 件系统使用率:"} {print $5}'
- END #结束的时候 执行
df -h |grep -v 'Filesystem' | awk 'BEGIN {printf "文件系统使用情况:\n \n"} {printf $1}
{printf "文件系统使用率:"} {print $5} END {printf "一切正常 \n"}'
3、sed命令
sed应用场景:主要对数据进行处理(选取、新增、替换、删除、搜索)
sed语法 :
sed [选项][动作]文件名
常用参数
-n : 把匹配到的行输出打印到屏幕
-p : 一行为单位进行打印,通常与-n一起使用
df -h |sed -n '2p'
d : 删除
df -h | sed '2d'
a:在行的下方插入新的内容
df -h |sed '2a 12345678989'
i : 在行的上方插入新的内容
df -h | sed '2i 12312312312'
c : 替换
df -h |sed '2c 12312311321'
指定字符替换:s/要被取代的内容/新的字符串/g :指定内容进行替换
df -h | sed 's/centos-root/Centos7/g'
-i : 对源文件进行修改(高危操作,慎用,用之前需要备份)
sed -i 's/Centos7/Centos8/g' df.txt
搜索:在文件中搜索内容
sed -n '/temp/p' df.txt
-e : 表示可以执行多条动作
sed -e 's/Centos8/Centos7/g' -e 's/tmp/TMP/g' df.txt > 123.txt