1、语法:
cut [选项参数] [file]2、使用说明:
从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。 如果不指定 File 参数,cut 命令将读取标准输入。必须指定-b、-c 或 -f 标志之一。
3.选项参数说明
选项参数功能-b以字节(bytes) 为单位取出固定字符区间-c以字符 (characters) 为单位取出固定字符区间-f指定域(fields),提取第几列,与-d一起使用-d指定分隔符,对列进行分割-s表示不包括那些不含分隔符的行(这样有利于去掉注释和标题)注意: 只有当操作域时才可以指定输入分隔符,默认分隔符是制表符。
4、实例详解
数据准备1:cut.txt
zeng 18 li 19 熏悟空 20 印贼做父 22 lee 17 按字节截取数据(-b)查询每行第2个字节
cut -b 2 cut.txt
查询每行第1-3个字节
cut -b 1-3 cut.txt
我的linux系统编码是UTF-8,所以一个汉字占三个字节长度
按字符截取(-c)截取第三个字符
cut -c 3 cut.txt 按域截取以空格为分隔符,取出每一行第一个域的数据
cut -d " " -f 1 cut.txt截取第三个冒号后面所有的数据
数据准备2:cut1.txt
t:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt代码如下:
cut -d ":" -f 4- cut1.txt以冒号为分隔符,取第三个冒号后面所有的数据,即取从第四个域(列)开始到末尾的数据。
截取出指定的多列数据
# 截取第2和第4个域的数据 cut -d '/' -f 2,4 cut1.txt以空格为分隔符,截取第二列(不处理输出没有分隔符的行)
数据准备:
zeng 18 li 19 熏悟空 20 印贼做父 22 lee 17 我爱北京天安门代码:
cut -d " " -sf 1 cut.txt技巧总结:
1、取连续的多列时,使用 ‘-’ 横杠;比如取第5列到第8列:5-8 N-:指从第N个字段到行尾。 N-M:指从第N个字段到第M个字段。 -N:指从行首到第N个字段。 2、取不连续的多列时,使用 ‘,’ 逗号,比如取第二列,第五列,第八列:2,5,8
1、工作模式:
sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非使用重定向存储输出。
2、使用场景:
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等
3、语法
sed [选项参数] ‘command’ filename选项参数说明
选项参数功能-e 脚本命令直接在指令列模式上进行sed的动作编辑。会将其后跟的脚本命令添加到已有的命令中,可用于同时编辑多个任务-f 脚本命令文件/该选项会将其后文件中的脚本命令添加到已有的命令中。-f filename会将文件中的sed动作都进行执行-i直接编辑原文件(谨慎使用)-n只打印模式匹配的行(只输出sed特殊操作过的行)-r支持扩展型正则表达式的语法4、常用命令功能描述
命令功能描述a新增,后面可接字符串 ,在当前行下面插入文本i插入,后面可接字符串 ,在当前行上面插入文本c替换,后面可接字符串 ,把选定的行改为新的文本s替换,替换指定字符,搭配正则表达式d删除,删除选择行p打印,将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行数据准备:sed1.txt
zeng 18 li 19 熏悟空 20 印贼做父 22 lee 17 我爱北京天安门 a 新增在第三行下面新增字符串’增增增’
sed '3a 增增增' sed1.txt在多个行下新增数据(逗号分隔)
sed '3,5a 增增增' sed1.txt i 插入在第二行插入字符串’插插插’
sed '2i 插插插' sed1.txt c 替换行数据用指定字符串替换多行数据
sed '1,2c 替换' sed1.txt s 替换指定字符串 s/old str/new str/g对每一行的首个指定字符进行替换
sed 's/e/E/' sed1.txt全局替换
sed 's/e/E/g' sed1.txt d 删除删除指定行号数据(第三行)
sed '3d' sed1.txt删除空白行数据
sed '/^$/d' sed1.txt删除含有指定字符的行数据
sed '/e/d' sed1.txtp 打印被选择数据
sed 's/e/E/p' sed1.txt对被操作的数据进行打印
sed -n 's/e/E/p' sed1.txt仅打印被操作的数据
awk是一个强大的文本分析工具。 处理过程:把文件逐行读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理。
1、语法:
awk [选项参数] '{[pattern] action}' filename pattern:awk查找的内容,匹配模式 action:找到匹配内容后执行的一系列命令选项参数说明:
选项参数说明-F指定分隔符,不指定默认为空格-f调用脚本-v指定变量2、优点
在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
3、实例
1、数据按空格进行分割,取出指定字段数据,$1表示第1字段,$2表示第2个字段,依次类推。
echo 'may I help you' | awk '{print $1,$3}'注意:$0表示输出整行的数据。
echo 'may I help you' | awk '{print $0}'2、按照指定分隔符分割,取出指定列,并用逗号分隔列
awk -F ':' '{print $5 "," $6}' awk1.txt3、设置变量,并进行计算
awk -v a=10 '{ print a+1}' awk1.txt4、输出行号NR和列数NF,并在文件开头输出start,结尾输出end
awk -F ':' 'BEGIN{print "start"}{print NR " " NF " " $0} END{print "end"}' awk1.txt内置变量:
NF 浏览记录的字段个数 NR 已读的记录数
5、使用函数(统计每行元素个数)
awk '{ print length($0) " " $0}' awk1.txt6、支持正则表达式(查询s开头的行数据)
# 查询s开头的 awk '/^s/' awk1.txt用于将文本文件内容加以排序
1、语法:
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]参数说明:
参数说明-b忽略每行前面开始出的空格字符。-c检查文件是否已经按照顺序排序。-d排序时,处理英文字母、数字及空格字符外,忽略其他的字符。-f排序时,将小写字母视为大写字母。-i排序时,除了040至176之间的ASCII字符外,忽略其他的字符。-m将几个排序好的文件进行合并。-M将前面3个字母依照月份的缩写进行排序。-n依照数值的大小排序。-u意味着是唯一的(unique),输出的结果是去完重了的。-o<输出文件> 将排序后的结果存入指定的文件。-r以相反的顺序来排序。-t<分隔字符> 指定排序时所用的栏位分隔字符。2、实例:
数据准备:
Lily 50 Balle 30 Ana 99 Conda 16 Linda 34 Tom 43根据数值大小进行排序
sort -n sort.txt默认按照第一列排序,因为第一列不是数字,故按照首字母进行排序。依次按ASCII码值进行比较,最后将他们按升序输出。
按相反顺序排序
sort -r sort.txt按照第二列降序排序
sort -rk 2 sort.txt对文档数据进行去重并写入到新的文档中
sort -u sort.txt -o unique.txt