linux-字符处理
1、管道 |
管道是一种通信机制,通常用于进程间的通信,它表现出来的形式将前面每一个进程的输出直接作为下一个进程的输入。
管道命令使用|
作为界定符号。
2、sort 排序
参数 | 作用 |
---|---|
-b | 忽略每行前面开始出的空格字符 |
-f | 排序时,将小写字母视为大写字母 |
-n | 按照字符串数值的大小排序,与-g区别为不转为浮点数 |
-g | 按通用数值排序,支持科学计数法 |
-t | 指定列的分割符,默认空白字符 |
-k | 指定按照第几列进行排序 |
-r | 降序排序,默认为升序 |
-h | 使用易读性数字(例如:2K 1G) |
-u | 去除重复的行 |
-o | 将输出写入文件 |
默认情况下,sort命令以第一列进行排序
sort 1.txt
cat 1.txt | sort
![](https://img.haomeiwen.com/i24470539/36e2249913545d81.png)
反向排序
sort -r 1.txt
cat 1.txt | sort -r
![](https://img.haomeiwen.com/i24470539/76dbe2c2f29b8aca.png)
按指定列进行排序,默认是空白符,也可以用 -t 指定分隔符
cat 1.txt | sort -k 1
cat 1.txt | sort -k 2
cat 1.txt | sort -k 3
![](https://img.haomeiwen.com/i24470539/414d321c8f7fafa7.png)
第二列排序的时候可以加 -n 进行数值排序
cat 1.txt | sort -n -k 2
![](https://img.haomeiwen.com/i24470539/a6974e2066d2e735.png)
进行排序后,排序结果会显示在终端,但是原文件不会改变,可以用-o重定向或者另存。用 > 覆盖某个文件会失败,数据被清空,但是用 >> 追加可以
cat 1.txt | sort -o 1.txt
cat 1.txt | sort > 1.txt #数据被清空
cat 1.txt | sort >> 1.txt #数据追加到1文件
![](https://img.haomeiwen.com/i24470539/fb9a7466c1772c0f.png)
3、uniq 删除重复内容
uniq 命令用于检查及删除文本文件中重复出现的行列。uniq命令只有在相邻的情况下才会删除重复的行,因此一般与 sort 命令结合使用,此外,该命令也可以检查文本文件中重复出现的行列,默认区分大小写。
参数 | 作用 |
---|---|
-c | 在每列旁边显示该行重复出现的次数 |
-d | 仅显示重复出现的行列 |
-u | 仅显示出一次,没有重复的行列 |
-w | 限制比较的字符;-w 4:比较文件中的前四个字符 |
-s | 忽略比较限定的字符;-s 4:忽略文件中每行的前四个字符 |
输入文件 | 指定已排序好的文本文件,如果不指定此项,则从标准读取数据 |
输出文件 | 指定输出的文件,如果不知道此选项,则将内容显示到标准输出设备(显示终端) |
准备一个文件
![](https://img.haomeiwen.com/i24470539/9e4f08432a7a8f40.png)
sort 1.txt | uniq -c
sort 1.txt | uniq -d
sort 1.txt | uniq -u
![](https://img.haomeiwen.com/i24470539/345d6d9c07661e8d.png)
4、cut 截取文本
参数 | 作用 |
---|---|
-b | 以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了-n |
-c | 以字符为单位进行分割 |
-d | 自定义分隔符,默认为Tab |
-f | 与-d一起使用,指定显示哪个区域 |
-n | 取消分割多字节字符。仅和-b标志一起使用 |
准备一个文件
![](https://img.haomeiwen.com/i24470539/f7b750d19a5a3b82.png)
以分割符指定分割某些特定的列
cat 1.txt | cut -d ':' -f1
cat 1.txt | cut -d ':' -f2
cat 1.txt | cut -d ' ' -f1
cat 1.txt | cut -d ' ' -f2
![](https://img.haomeiwen.com/i24470539/31520f55de9ec9df.png)
5、tr文本转换
Linux tr 命令用于转换或删除文件中的字符。
tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
语法:tr [OPTION]…SET1[SET2]
参数 | 作用 |
---|---|
-c | 反选设定字符。符合SET1的部分不做处理,不符合的剩余部分才进行转换 |
-d | 删除指令字符 |
-s | 缩减连续重复的字符成指定的单个字符 |
-t | 削减SET1指定范围,使之与SET2设定长度相等 |
![](https://img.haomeiwen.com/i24470539/496439f22e30711b.png)
小写转换为大写
cat 1.txt | tr '[a-z]' '[A-Z]'
cat 1.txt | tr '[:lower:]' '[:upper:]'
![](https://img.haomeiwen.com/i24470539/d587df2b38e2c597.png)
删除字符
cat 1.txt | tr -d ' '
cat 1.txt | tr ':'
![](https://img.haomeiwen.com/i24470539/abc8bc7419353494.png)
6、使用paste做文本合并
Linux paste 命令用于合并文件的列。
paste 指令会把每个文件以列对列的方式,一列列地加以合并。
参数 | 作用 |
---|---|
-d | 用指定的间隔字符取代TABs字符 |
-s | 串列进行而非平行处理 |
![](https://img.haomeiwen.com/i24470539/996edbc91012aa98.png)
不加参数会默认以制表符为分界列对列合并
paste 1.txt 2.txt
![](https://img.haomeiwen.com/i24470539/4c2701ca52661a01.png)
-d可以设置以何种字符合并
paste -d ' ' 1.txt 2.txt
![](https://img.haomeiwen.com/i24470539/9af65cff72343ee7.png)
使用s参数时。单个文件会将该文件的多行数据合并成一行显示,多个文件会将各个文件单独合并成一行之后再行对行合并
![](https://img.haomeiwen.com/i24470539/e51c2cd7527f572e.png)
7、使用split分割大文件
Linux split命令用于将一个文件分割成数个。
该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件。
参数 | 作用 |
---|---|
-<行数> | 指定每多少行切成一个小文件 |
-b<字节> | 指定每多少字节切成一个小文件 |
-C<字节> | 与参数“-b”相似,但是在切割时会尽量维持每行的完整性 |
将根目录文件信息写入文件
ll / | cat > 1.txt
对上面的文件9行为一个文件进行分割
split -9 1.txt split.txt
![](https://img.haomeiwen.com/i24470539/d71ef53cc15761d8.png)
以1k字节分割文件
split -b 1k 1.txt split.txt
![](https://img.haomeiwen.com/i24470539/50936c839609c6c3.png)
8、wc命令-统计
参数 | 作用 |
---|---|
-c | 只显示Bytes数 |
-l | 显示行数 |
-w | 只显示字数 |
不加参数会同时显示行数,字数,Bytes数,加上上述参数会单独显示其中一项
wc 1.txt
cat 1.txt | wc
![](https://img.haomeiwen.com/i24470539/c32cefa4fe0e0283.png)
网友评论