仅个人想法,会持续不间断更新和改进。
Linux系统中的数据处理,可真假转换,可搜索,需排序、减重复。
真假转换之间 tr
Linux tr
命令用于转换或删除字符。
tr
命令可以从标准输入读取数据,经过字符串转译后,将结果输出到标准输出。
官方定义为:
tr
– translate or delete characters
使用方法为:$ tr [OPTION]… SET1 [SET2]
其中常用的三个选项为:
-d, --delete
:删除指令字符[:lower:]
:所有小写字母[:upper:]
:所有大写字母[:blank:]
:所有空格
a-z小写全部转换为大写
默认无参数的显示$ echo “Hello World, Welcome to Linux!” | tr a-z A-ZHELLO WORLD, WELCOME TO LINUX!
# 还有一种方法$ echo “Hello World, Welcome to Linux!” | tr [:lower:] [:upper:]HELLO WORLD!
A-Z大写全部转换为小写
默认无参数的显示$ echo “Hello World, Welcome to Linux!” | tr A-Z a-zhello world, welcome to linux!
# 还有一种方法$ echo “Hello World, Welcome to Linux!” | tr [:upper:] [:lower:]hello world, welcome to linux!
貌似起名可以用这个
很多变量或者函数起名字都会移除元音字符,可以考虑使用-d
参数,如下:$ echo “Hello World, Welcome to Linux!” | tr -d a,o,e,iHll Wrld Wlcm t Lnux!
不过感觉删除的多了,也不一定是好事。。。
比如里外看Wlcm不晓得啥意思
移除文件中的所有空格
同理,使用-d
,结合[:blank:]
可以快速删除所有空格。$ echo “Hello World, Welcome to Linux!” | tr -d [:blank:]HelloWorld,WelcometoLinux!
文件内容搜索利器 – grep
Linux grep
命令用于查找文件里符合条件的字符串。
官方定义为:
grep
,egrep
,fgrep
– print lines matching a pattern
grep支持正则表达式,是一个强大的文本搜索工具。
语法
语法也挺复杂,因为功能确实很强大。$ grep [OPTION…] PATTERNS [FILE…]$ grep [OPTION…] -e PATTERNS … [FILE…] # 使用egrep$ grep [OPTION…] -f PATTERN_FILE … [FILE…] # 使用fgrep
常用的参数为:
- -r 或 –recursive : 此参数的效果和指定”-d recurse”参数相同
- -v 或 –invert-match : 显示不包含匹配文本的所有行
- -i 或 –ignore-case : 忽略字符大小写的差别
- -n 或 –line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
假定有如下3个文件,1个文件夹,内容如下:a This is a Hello a b this is b Hello bc This is c Hello c
d/d This is d Hello d
默认无参数
在当前目录搜索包含is字符串,可以看到a/b/c三个文件均有输出,而d因为是目录,暂时无输出。$ grep is *a:This is ab:this is bc:This is cgrep: d: Is a directory
增加文件夹
与其他命令类似,增加-r
参数,递归搜索$ grep -r is *a:This is ab:this is bc:This is cd/d:This is d
反向查找
在某些情况下,或许正想找到不包含某些字符串的内容,如下:$ grep -rv is *a:Hello ab:Hello bc:Hello cd/d:Hello d
此时可以看到,不包含is的内容显示了出来。
不区分大小写
而某些情况下,或许我们希望找到不区分大小写的内容,比如对于This/this而言:$ grep -r This *a:This is ac:This is cd/d:This is d
$ grep -ri This *a:This is ab:this is bc:This is cd/d:This is d
可以看到此时有可能笔误,或者其他原因的b文件已经被找到了。
显示行数,精准定位
如果文件内容比较多,此时显示内容在哪一行,是很重要的,加上-n
参数既可解决。$ grep -rn This *a:1:This is ac:1:This is cd/d:1:This is d
没有规矩不成方圆 sort
Linux sort
命令用于将文本内容进行排序。
官方定义为:
sort
– sort lines of text files
语法
$ sort [OPTION]… [FILE]…$ sort [OPTION]… –files0-from=F
常用的参数为:
-c
检查文件是否已经按照顺序排序。-u
意味着是唯一的(unique),输出的结果是去完重了的。-r
以相反的顺序来排序。-k field1[,field2]
按指定的列进行排序。
这里假定测试文件名为testfile:LiSi 80
ZhangSan 70
WangWu 90
MaLiu 88
默认无参数
在使用sort
命令以默认的式对文件的行进行排序,命令如下:$ sort testfile
LiSi 80MaLiu 88WangWu 90ZhangSan 70
sort
命令默认情况下将第一列以 ASCII 码的次序排列,并将结果输出到标准输出。
根据第N列排序
对于测试文件而言,或许我们更希望使用数字来统计排序,此时可以使用-k N
参数,其中N为列数$ sort testfile -k 2
ZhangSan 70LiSi 80MaLiu 88WangWu 90
检查是否已经排序
在某些情况下,或许只想看看文件是否已经排序,使用-c
参数 :$ sort -c testfilesort: testfile:2: disorder
如果没有排序会有输出,而排序的话就没有输出。
逆序排列
如果希望看一下数字从高到低的培训,使用-r
参数:$ sort testfile -k 2 -rWangWu 90MaLiu 88LiSi 80ZhangSan 70
你是唯一的 uniq
Linux uniq
命令用于检查及删除文本文件中重复出现的行列,一般与 sort
命令结合使用。
官方定义为:
uniq
– report or omit repeated lines
uniq 可检查文本文件中重复出现的行列。
语法
语法比较简单,直接用就可以。$ uniq [OPTION]… [INPUT [OUTPUT]]
常用的参数为:
-c
或--count
在每列旁边显示该行重复出现的次数。-d
或--repeated
仅显示重复出现的行列。-u
或--unique
仅显示出一次的行列。
假定有1个文件为testfile,内容如下:testfile Hello 1 Hello 2 Hello 2 Hello 3 Hello 3 Hello 3 Hello 4 Hello 4 Hello 4 Hello 4
默认无参数
使用uniq 命令可以删除重复的行,不管有多少重复的行,仅仅显示一行。$ uniq testfileHello 1Hello 2Hello 3Hello 4
统计出现频次
如果希望统计每一行出现的频次,可以使用-c
参数,其中第一行输出为出现的次数$ uniq -c testfile 1 Hello 1 2 Hello 2 3 Hello 3 4 Hello 4
仅仅显示重复的行
在某些情况下,或许只想看到有重复的列,使用-d
参数 :$ uniq -d testfileHello 2Hello 3Hello 4
仅仅显示不重复的行
而某些情况下,或许只想看到不重复的列,使用-u
参数:$ uniq -u testfileHello 1
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/391405.html