赞
踩
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
查询每行第2个字节
cut -b 2 cut.txt
查询每行第1-3个字节
cut -b 1-3 cut.txt
我的linux系统编码是UTF-8,所以一个汉字占三个字节长度
截取第三个字符
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
我爱北京天安门
在第三行下面新增字符串’增增增’
sed '3a 增增增' sed1.txt
在多个行下新增数据(逗号分隔)
sed '3,5a 增增增' sed1.txt
在第二行插入字符串’插插插’
sed '2i 插插插' sed1.txt
用指定字符串替换多行数据
sed '1,2c 替换' sed1.txt
对每一行的首个指定字符进行替换
sed 's/e/E/' sed1.txt
全局替换
sed 's/e/E/g' sed1.txt
删除指定行号数据(第三行)
sed '3d' sed1.txt
删除空白行数据
sed '/^$/d' sed1.txt
删除含有指定字符的行数据
sed '/e/d' sed1.txt
p 打印被选择数据
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.txt
3、设置变量,并进行计算
awk -v a=10 '{ print a+1}' awk1.txt
4、输出行号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.txt
6、支持正则表达式(查询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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。