-
df -h | awk '{print $5}' #df第五字段数据
df -h | grep "/dev/sda5" | awk '{print $5}' #只要根分区的第五段数据
df -h | grep "/dev/sda5" | awk '{print $5}' | cut -d "%" -f 1 #去掉%
awk 'BEGIN{print "test"}{print $2 "\t" $4}' student.txt #先执行BEGIN
awk 'END{print "test"}{print $2 "\t" $4}' student.txt #最后执行END
cat /etc/passwd | grep /bin/bash | awk 'BEGIN{FS=":"}{print $1 "\t" $3}' #先执行分隔符,FS内置变量标识":"
cat student.txt | grep -v Name | awk '$4>=70{print $2}' #不看名字,只看第二个字段大于70分的成绩
查看全部 -
awk是一个数据处理工具,相比于sed常常作用于一整行的处理,将一行分成数个”字段“来处理。
awk命令
awk '条件类型1{动作1}条件类型2{动作2}...' 文件名
条件(Pattern):
一般使用关系表达式作为条件,比如x>10,x<=10
动作(Action)
格式化输出
流程控制语句
举例:
awk '{printf $2 "\t" $4 "\n"}' student.txt #\t\n一定要加"" $2代表第二个字段
awk '{print $2 "\t" $4}' student.txt #print自动换行
awk执行流程
awk先读取第一行数据再判断条件,因为这里没写条件,将文件名student.txt赋值给$0,$2是第二个字段$4是第四个字段。
再读取第二行数据重复上述步骤
查看全部 -
printf "输出类型输出格式" 输出内容
输出类型:
%ns 输出字符串。n是数字指代输出几个字符
%n 输出整数。n是数字,指代输出几个数字
%m.nf 输出浮点数。m和n是数字,指代输出的整数位数和小数位数。如%8.2f代表共输出8位数,其中2是小数位数,6位是整数
输出格式:
\a 输出警告声音
\b 输出退格键,也就是Backspace键
\f 清空屏幕
\n 换行
\r 回车,也就是Enter键
\t 水平输出退格键,也就是Tab键
\v 垂直输出退格键,也就是Tab键
举例:
echo 123456
echo 1 2 3 4 5 6
printf 1 2 3 4 5 6
printf %s 1 2 3 4 5 6
printf %s %s %s 1 2 3 4 5 6
printf '%s %s %s' 1 2 3 4 5 6
printf '%s\t%s\t%s\n' 1 2 3 4 5 6
vi student.txt
printf student.txt #输出的只是文件名,不是里面内容
echo student.txt #输出的只是文件名,不是里面内容
printf $(cat student.txt) #只显示ID
printf 's' $(cat student.txt) #没加分割,所有内容连成一篇输出
printf '%s\t%s\t%s\t%s\t\n' $(cat student.txt)
查看全部 -
引例 grep行提取,cut列提取;
useradd user1
vi /etc/passwd
grep "/bin/bash" /etc/passwd | grep -v "root" #-v排除root用户
cut命令
cut [选项] 文件名 #默认是TAB制表符
选项:
-f 列号:提取第几列(从1开始)
-d 分隔符:按照指定分隔符分割列
举例:
vi student.txt #以下是编辑内容
ID Name gender Mark
1 furong F 85
2 fenggj F 60
3 cang F 70
cut -f 2,4 student.txt
grep "/bin/bash" /etc/passwd | grep -v "root" | cut -f 1 -d ":"
df -h #系统分区使用状况
df -h | cut -f 1,5 #没有找到TAB制表符,整行数据都是第一列内容
cut -f 列号,列号 (多个列号用逗号隔开;这个方法默认的文件以TAB制表符)
查看全部 -
命令模式 d+G 鼠标在最前面删除所有内容
grep "[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}" test.txt #日期
grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" test.txt #IP地址
查看全部 -
1、转义符“\”
让特殊的符号丧失它的作用,只是表示这个符号本身
"\.$" #匹配以"."结尾的行,使特殊符号"."失去作用
2、"\{n\}" 表示其前面的字符恰好出现n次
"a\{3\}" #匹配a字母连续出现三次的字符串 grep "a\{3\}" test.txt
"a\{3\}u" #u前面出现连续三次的a字符串 grep "xa\{3\}u" test.txt
"[0-9]\{3\}" #匹配包含连续的三个数字的字符串,最好加上定界符,即左右加上匹配的字母,如"a[0-9]\{3,\}b",否则易匹配错误,因为正则是包含匹配
3、"\{n,\}"表示其前面的字符出现不小于n次
"xc\{1,3\}u" #匹配在字母x和u之间最少一个c,最多三个c
"^[0-9]\{3,\}[a-z]" #匹配最少用连续三个数字开头包含小写字母的行
4、"\{n,m\}"匹配其前面的字符出现n-m次的行
"sa\{1,3\}i" #匹配以s开头、i结尾,且s和i之间有1-3个a的行
查看全部 -
1、"."匹配除了换行符外任意一个字符
"s..d" #会匹配在s和d这两个字母之间一定有两个字符的单词
"s.*d" #匹配在s和d字母之间有任何字符
".*" #匹配所有内容
grep "s..d" test.txt
grep "s.*d" test.txt
grep ".*" test.txt #查找所有内容
2、"^"匹配行首,“$”匹配行尾
"^M" #匹配以大写字母"M"开头的行
"n$" #匹配以小写字母“n”结尾的行
"^$" #会匹配空白行
grep -n "^$" test.txt #-n显示空白行号
3、"[]"匹配中括号内指定的任意一个字符,只匹配一个字符,与通配符用法相同
"s[oa]id" #匹配s和i字母中,要么是a,要么是o
"[0-9]" #匹配任意一个数字
"^[0-9]" #匹配以数字开头的行
"^[0-9]$" #匹配以数字结尾的行
"[a-z]$" #表示匹配以小写字母结束的行
"^[^a-z]" #匹配不用小写字母开头的行,“[]”内的“^”表示取反
"[^a-zA-Z]$" #匹配不以字母结尾的行,linux中,a-zA-Z表示所有字母
查看全部 -
"*"前一个字符匹配0次,或任意多次
vi test.txt
"a*" #匹配所有内容,包括空白行
"aa*" #匹配至少包含有一个a的行
"aaa*" #匹配最少包含有两个连续a的字符串
"aaaaa*" #匹配最少包含有四个连续a的字符串
举例:
grep "a*" test.file #*前加任意字符代表该字符重复0次到任意多次
grep "aa*" test.file
grep "aaa*" test.file
查看全部 -
正则表达式与通配符
通配符
* 代表匹配任意内容
? 代表匹配任意一个内容
[] 代表中括号中一个字符
正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep,awk,sed等命令可以支持正则表达式。
通配符用来匹配符号条件的文件名,通配符是 匹配。ls,find,cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配。
touch abc;touch abcd
find . -name "abc*" #必须加上""
cat anaconda-ks.cfg #安装日记
grep "size" anaconda-ks.cfg #在安装日记里找size
查看全部 -
正则表达式
正则表达式是什么
正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。主要用于模糊匹配。
查看全部 -
排序命令sort
查看全部 -
统计命令wc
查看全部 -
sed [选项] [动作] 文件名
sed基本选项
查看全部 -
sed选项查看全部
-
sed动作查看全部
举报