字符截取命令
cut:字段提取命令
cut和grep的区别是:cut提取列、grep提取行
- cut [选项] 文件名
- -f 列号:提取第几列,逗号分开提取多列
- -d 分隔符:按照指定分隔符分割列(默认分分割 符是制表符)
示例
- cat /etc/passwd | grep /bin/bash | grep -v root #获取普通用户的行
- cat /etc/passwd | grep /bin/bash | grep -v root | cut -d “:” -f 1 #获取普通用户的第一列属性(用户名)
printf:格式化打印命令
- printf ‘输出类型输出格式’ 输出内容
- 输出类型:(n表示个数,%m.nf类似c语言)
- %ns: 输出字符串
- %ni: 输出整数
- %m.nf: 输出浮点数
- 输出格式:ASCII
示例
- printf ‘%s %s %s\n’ 1 2 3 4 5 6 #3个%s代表每3个为一组
- printf ‘%s\t %s\t %s\t %s\n’ $(cat student.txt) #把表格格式的文本文件进行格式化输出
awk:截取符合条件的列
awk ‘条件1{动作1}条件2{动作2}…’ 文件名
- 条件(一般使用关系表达式作为条件):
- X > 10
- X >= 10
…
- 动作:
- 格式化输出(printf)
- 流控制语句
特性
awk会先读入第一行数据,再进行处理
可以识别空格作为分隔符(df命令)
$0代表整行数据
$n代表本行第n列的数据
拥有print(自带换行符)和printf(不带换行符)
例子
- awk ‘{printf $1 “\t” $4"\n"}’ 文件名 输出文件的1、4行
- df -h | grep sda5 | awk ‘{print $5}’ | cut -d “%” -f 1 获取内存使用量
- awk ‘BEGIN{print “Test Begin”} {print “$2 \t $5”}’ 文件名 BEGIN:优先执行
- awk ‘BEGIN{FS=":"}END{print “end!!!”}{print “$1 \t $2”}’ /etc/passwd 在读取第一条数据之前指定分隔符
- cat /etc/passwd | awk ‘$2 >= 500{print $1}’ 关系运算符
sed:数据流编辑器,主要用来及那个数据进行选取、替换、删除、新增
sed [选项] ‘[动作]’ 文件名
选项
- -n:一般sed命令会把所有数据输出到屏幕,如果加入此选项,则只会把经过sed命令处理的行输出到屏幕
- -e:允许对输入数据应用多条sed命令编辑(多个条件之间用分号分开)
- -i:直接修改读取数据的文件,而不是由屏幕
动作
- a: 追加,在当前行后添加一行或多行,\代表数据未完结
- c: 行替换,用C后面的字符串替换掉原数据行
- i: 插入,在当前行前插入一行或多行
- d: 删除指定行
- p: 答应指定行
- s: 字符替换,格式:“行范围s/旧字符串/新字符串/g”(类似Vim)
示例
- sed -n ‘2p’ 文件名 :输出文件中的第二行
- sed ‘2,4d’ 文件名 :删除文件2行到第4行(文件未更改,只输出到屏幕)
- sed ‘2a Hello’ 文件名 :在第二行之后追加hello
- sed ‘4i World’ 文件名 :在第四行前插入World
- sed ‘2c 2017’ 文件名
- sed ‘2s/2017/2037/g’ 文件名 :把第二行的2017替换成2037 (不加哈行号代表所有行)
字符处理命令
sort
sort [选项] 文件名
选项
- -f 忽略大小写
- -n 以数值型进行排序,默认使用字符串进行排序
- -r 反向n排序
- -t 指定分隔符,默认分隔符是制表符
- -k n[,m] 从第n个字段开始,第m个字段结束
示例
- sort -n -t ‘:’ -k 3,3 /etc/passwd 指定分割符是‘:’,用第3个字段开头第三个字段结尾,就是只用第3个字段排序
wc(统计命令)
wc [选项] 文件名
选项
- -l 只统计行数
- -w 只统计单词数
- -m 只统计字符