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