Linux学习五文本处理
Posted cac2020
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于Linux学习五文本处理的主要内容,如果未能解决你的问题,请参考以下文章
Linux学习42 必备技能-文本处理神器sed命令应用与实战