linux shell 基础(下)
shell工具-cut
cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。注意cut操作文件内容并没有改变原文件内容,除非你使用重定向存储输出。
基本用法
cut [选项参数] filename
选项参数说明:
- -f 列号,提取第几列,
-f n-
表示第n列及以后的所有列,-f -n
表示第n列及以前的所有列; - -d 分隔符,按照指定分隔符分割列(默认分割符是制表符)
示例
1 | # 数据准备 |
shell工具-sed
sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”;接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕;接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
基本用法
sed [选项参数] ‘command’ filename
选项参数说明:
- -e:直接在指令列模式上进行sed的动作编辑
命令功能描述:
- a:新增,a的后面可以接字串,在下一行出现
- d:删除
- s:查找并替换
示例
1 | # 数据准备 |
shell工具-awk
- awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
- awk处理过程: 依次对每一行进行处理,然后输出
基本用法
1 | awk [选项参数] 'BEGIN{} pattern1{action1} pattern2{action2} ... END{}' filename |
注意:
- pattern:表示AWK在数据中查找的内容,就是匹配模式
- action:在找到匹配内容时所执行的一系列命令
选项参数说明:
- -F:指定输入文件折分隔符
- -f:调用脚本
- -v:赋值一个用户定义变量
awk的内置变量:FILENAME
:文件名NR
:已读的记录数NF
:浏览记录的域的个数(切割后,列的个数)
示例
1 | # 数据准备 |
shell工具-sort
sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。
基本语法
1 | sort 选项 待排序文件的列表 |
选项:
- -n:依照数值的大小排序
- -r:以相反的顺序来排序
- -t:设置排序时所用的分隔字符
- -k:指定需要排序的列
示例
1 | # 数据准备 |
测试示例
示例1:查询file1中空行所在的行号1
$ awk '/^$/{print NR}' sed.txt
示例2:有文件chengji.txt内容如下
张三 40
李四 50
王五 60
使用Linux命令计算第二列的和并输出:1
$ cat chengji.txt | awk -F " " '{sum+=$2} END{print sum}'
示例3:对文本中无序的一列数字排序并求和1
2
3
4
5
6sort -n test.txt | awk '{sum+=$0; print $0} END{print "sum="sum}'
1
2
5
8
sum=16
文件编码(iconv)
1 | # 将UTF-8编码的src-file.csv 转化为 GBK编码的target-file.csv |
文件解压和压缩
1 | # tar |
标准输出和错误输出
1 | $ nohup xxx/xxx.sh > mystd.out 2> myerr.ouct & |