【Linux学习五】文本处理


环境
  虚拟机:VMware 10
  Linux版本:CentOS-6.5-x86_64
  客户端:Xshell4
  FTP:Xftp4

一、cut:显示切割的行数据
f:选择显示的列
s:不显示没有分隔符的行
d:自定义分隔符

举例:
cut -d' ' -f1-3 test.txt 按照空格切分test.txt每一行数据 显示1-3列
cut -d' ' -f1,3 test.txt 按照空格切分test.txt每一行数据 显示第1、3列
cut -d' ' -s -f1,3 test.txt 按照空格切分test.txt每一行数据 显示第1、3列 不显示没有分隔符的行

二、sort:排序文件的行
n:按数值排序
r:倒序
t:自定义分隔符
k:选择排序列
u:合并相同行
f:忽略大小写

[root@node1 src]# sort -t' ' -k2 sort.txt
apple 1
banana 12
orange 8
[root@node1 src]# sort -t' ' -n -k2 sort.txt
apple 1
orange 8
banana 12
[root@node1 src]# sort -t' ' -n -r -k2 sort.txt
banana 12
orange 8
apple 1


三、wc 统计单词
-c 字节数
-l 行数
-w 单词数
统计文件行数、单词数、单词字节数(包括空格、占位符)
[root@node1 src]# wc sort.txt
3 6 27 sort.txt

四、sed 行编辑器
主要两件事:
1.查询数据,使用行号或者正则查询
2.对查询出来的数据进行新增(行前或行后)、替换、删除 -i参数会修改源文件

sed [options] 'AddressCommand' file ...
options:
-n: 只展示匹配到内容
-i: 直接修改原文件
-e SCRIPT -e SCRIPT:可以同时执行多个脚本
-f /PATH/TO/SED_SCRIPT
-r: 表示使用扩展正则表达式

编辑命令
d: 删除符合条件的行;
p: 显示符合条件的行;
a\string: 在指定的行后面追加新行,内容为string
\n:可以用于换行
i\string: 在指定的行前面添加新行,内容为string
c\ 用新文本替换定位文本
r FILE: 将指定的文件的内容添加至符合条件的行处
w FILE: 将地址指定的范围内的行另存至指定的文件中;
s/pattern/string/修饰符: 查找并替换,默认只替换每行中第一次被模式匹配到的字符串
g: 行内全局替换
i: 忽略字符大小写
s///: s###, s@@@
\(\), \1, \2

sed:行编辑器Address
可以没有
给定范围
查找指定行/str/


五、awk
awk是一个强大的文本分析工具。相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。
简单来说awk就是把文件逐行的读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk -F '{pattern + action}' {filenames}
支持自定义分隔符
支持正则表达式匹配
支持自定义变量,数组 a[1] a[tom] map(key)
支持内置变量
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
支持函数
print、split、substr、sub、gsub
支持流程控制语句,类C语言
if、while、do/while、for、break、continue


参考:
sed
https://www.cnblogs.com/ctaixw/p/5860221.html

posted @ 2018-12-22 17:23  cac2020  阅读(211)  评论(0编辑  收藏  举报