1.cut
在文件中负责剪切数据用。cut命令从文件中的每一行剪切字节、字符和字段并将这些字节、字符和字段输出
基本用法:
cut [选项参数] filename
说明:默认分隔符是制表符
选项参数说明:
-f 列号,提取第几列
-d分隔符,按照指定分隔符分隔列
例子:
-
cut -d " " -f 1 cut.txt
根据空格切割 cut.txt 文件的第一列 -
cut -d " " -f 1,2 cut.txt
根据空格切割cut.txt文件的第一、二列 -
切割文件中的某个关键字:
cat cut.txt | grep "hello" | cut -d " " -f 1
注意:第一个是cat不是cut,意思是截取cut.txt文件中hello的字段 然后根据空格截取第一列 -
截取系统PATH变量值,第2个“:”开始后的所有路径
测试数据:
/Users/zhangsheng1/Project/Java/apache-maven-3.3.9/bin:/Users/zhangsheng1/Project/Java/jdk1.8.0_192.jdk/Contents/Home/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
echo $PATH | cut -d : -f 3-
注意:3之后还有一个【-】,代表第二个“:”号之后所有的路径,如果不带【-】,只剪出第3列的内容
带【-】结果:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
不带【-】结果:
/usr/local/bin
2.sed
一种流编辑器,一次处理一行内容,处理时,把当前处理行的内容存储在临时缓冲区,即,模式空间,接着用sed命令处理缓冲区中的内容,处理完成后把缓冲区的内容推送到屏幕。接着处理下一行数据,以此往复,直到文件末尾。文件内容不会改变。
基本用法:
sed[选项参数] ‘command’ filename
选项参数:
-e : 直接在指令列模式上进行sed的动作编辑
命令功能描述:
a: 新增,a的后面可以接字符串,在下一行出现
d: 删除
s: 查找并替换
例子:
sed "2a mei nv" sed.txt // 将mei nv插入到sed.txt的第二行下面,只是打印上会加入一行mei nv,但是原来的set.txt通过vim命令查看的话并没有新增一行记录,还是之前的记录
sed "/wo/d" sed.txt //删除所有wo的记录,同样,只是会在打印上删除原来的wo,并不会真正的修改原来的文件
sed "s/wo/ni/g" set.txt //查找所有的wo,将wo替换成ni。g代表全局的意思,如果不加g,则代表只替换第一个wo.同样不会修改原文件sed.txt中的内容
sed -e "2d" -e "s/wo/ni/g" set.txt //删除sed.txt文件中的第二行,并将wo替换为ni
3.awk
一个强大的文本分析工具,把文件逐行读入,以空格为默认分隔符将每行进行切片,切开的部分再进行处理
基本用法:
awk[选项参数] 'pattern1 {action1} pattern2{action2} ……' filename
说明:
pattern: 表示AWK在数据中查找的内容,就是匹配模式
action: 对找到的内容进行的一系列命令
选项参数:
-F:指定输入文件分隔符
-v:赋值一个用户定义变量
举例:
数据: root:x:0:0:root:/root:/bin/bash
文件: awk.txt
要求1: 找出awk文件中以root开头的所有行,并输出第七列
命令1: awk -F : '/^root/ {print $7}' awk.txt
要求2:找出awk文件中以root开头的所有行,并输出第一列和第七列,中间以逗号分隔
命令2: awk -F : '/^root/ {print 7}' awk.txt
要求3: 查处awk文件中所有空行所在的行号
命令3: awk '/^$/ {print NR}' awk.txt
要求4:有如下格式的文件:
zhangsan 50
lisi 60
wangwu 40
求出第二列的和并输出
命令4:cat interview.txt | awk -F " " '{sum += $2} END{print sum}'
4.sort
将文件进行排序
基本语法:
sort(选项)(参数)
选项:
-n : 按照数值的大小进行排序
-r : 以相反的顺序来进行排序
-t : 设置排序时所用的分隔符
-k : 指定需要排序的列
举例:
有如下格式数据:
bb:40:5.4
bd:20:4.2
xz:50:2.3
cls:10:3.5
ss:30:1.6
要求:
按照“:”分隔,并按照第二列进行倒排
命令: sort -t : -nrk 2 sort.sh
网友评论