阅读量:
199
初次接触Linux的学习笔记,部分作手册自查使用。如有错误或遗漏还请海涵,可评论或邮箱联系。
最后修改时间:2020-03-19 07:30:52 星期四
一、cut字段提取命令
cut [选项] 文件名:列提取命令
【选项】
-f:列号,提取第几列
-d:分隔符,按照指定分隔符分割列。默认使用制表符(tab)分割
【特点】
对制表符和有特定符号分开的字段效果好。如果字段之间用多个空格分开,cut就没法处理了,需要用到awk
cut是对文件中的每一行均执行一遍动作,提取出每一行里符合条件的字段输出
# ID Name gender Mark
# 1 furong F 85
# 2 fengj F 60
# 3 cang F 70
cut -f 2 student.txt
# Name
# furong
# fengj
# cang
cut -f 2,4 student.txt
# Name Mark
# furong 85
# fengj 60
# cang 70
cut -f 1,3 -d ":" /etc/passwd # 用":"分割列
二、printf命令
printf '输出类型 输出格式' 输出内容:标准输出
【输出类型】
%ns:输出字符串。n是数字,指代输出几个字符
%ni:输出整数。n是数字,指代输出几个数字
%m.nf:输出浮点数。m和n是数字,指代总位和小数位数。如%8.2f表共输出8位,其中2位是小数
【输出格式】
\a:输出警告声音
\b:输出退格键(Backspace)
\f:清除屏幕
\n:换行
\r:回车(Enter)
\t:水平输出退格键(Tab)
\v:垂直输出退格键(Tab)
# 输出文件内容
printf '%s' $(cat student.txt) # 将文件内所有字符串挨个输出
# printf不支持管道命令
# cat student.txt | printf '%s' 错误
三、awk命令
awk '条件1{动作1}条件2{动作2}...' 文件名:列提取命令
【条件】
BEGIN:在awk输出的开头部分执行动作
END:在awk输出的结尾部分执行动作
关系表达式
【动作】
格式化输出
流程控制语句
FS:指定列之间的分隔符。因为下述特点3,在FS前一定要加条件BEGIN,否则第一行将不能正确输出
【特点】
可以识别用多个空格分开的字段
awk是对文件中的每一行均执行一遍动作,提取出每一行里符合条件的字段输出,同cut
awk开始后,对于每一行,将文件名赋给变量$0,第一个字段赋给$1,第二个字段赋给$2...然后再执行单引号里的动作
awk '{printf $2 "\t" $4 "\n"}' student.txt
# 相当于cut -f 2,4 student.txt
# 如果没有条件,就无条件执行动作
df -h | awk '{printf $1 "\t" $3}'
# df -h的输出结果是用多个空格分开的,awk可以识别这样的字段
awk 'BEGIN{FS=":"}{print $1 "\t" $3}'
# 在FS前一定要加条件BEGIN
awk '$4>=70{print $2}'
# 每行如果第4个字段>=70,就输出第2个字段
四、sed命令
sed [选项] '[动作]' 文件名:增删改文件中的行
【选项】
-n:只把sed处理的行输出屏幕。默认是将处理后的整个文件输出屏幕,且并不真的去修改文件内容
-e:允许一条sed语句加多条动作,动作之间用;隔开
-i:sed处理结果写入文件
【动作】
数字:行号
a:追加,在当前行后添加行
i:插入,在当前行前插入行
d:删除指定行
p:打印,输出指定行
c:行替换,用c后面的字符串替换原行
s:字串替换。格式为"行范围s/旧字串/新字串/g"(类似于vim中的替换)
sed -n '2p' student.txt
# 查看文件的第2行
sed '2,4d' student.txt
# 删除第2到第4行的数据,但不修改文件本身
sed '2a hello' student.txt
# 在第2行后追加hello,hello是第3行
sed '2i hello' student.txt
# 在第2行前插入hello,hello是第2行,原第2行变成第3行
sed '2c furong bu ji ge' student.txt
# 把第2行整行替换掉
sed -i '4s/70/100/g' student.txt
# 把第4行中的70替换成100
sed -e 's/fengj//g;s/cang//g' student.txt
# 允许多条动作,动作之间用;隔开
# 同时把"fengj"和"cang"替换为空
五、sort命令
sort [选项] 文件名:将文件中的内容排序
【选项】
-n:以数值型排序。默认为字符串型排序
-f:忽略大小写
-r:反向排序
-t:指定分隔符。默认是制表符
-k n[,m]:按照指定字段范围排序。从第n个字段开始,第m个字段结束(默认到行尾)
sort /etc/passwd
# 默认按第1个字母从a-z行排序,第1个字母一样就比较第2个字母
sort -r /etc/passwd
# 从z-a
sort -n -t ":" -k "3,3" /etc/passwd
# 以":"为分隔符,按第3个字段,使用数值型排序
六、wc命令
wc [选项] 文件名:显示文件统计数据
【选项】
-l:只统计行数
-w:只统计单词数
-m:只统计字符数