Linux系统命令及Shell脚本学习笔记五:字符处理

时间:2022-11-24 15:38:04

管道

管道可以把一个命令的输出内容当作下一个命令的输入内容,两个命令之间只需要使用管道符号连接即可,由管道连接起来的进程可以自动运行。

ls -l /etc/init.d | more

查看目录下文件的详细信息,但会因为输出内容过多而造成翻屏,先输出的内容就会看不到了,利用管道功能,将命令的输出使用more一页一页地显示出来。

使用grep搜索文本

grep [-ivnc] '需要匹配的字符' 文件名 : 如果匹配到相关信息就会打印出符合条件的所有行。

-i 不区分大小写

-c 统计包含匹配的行数

-n 输出行号

-v 反向匹配

打印出不包含name的行:

cat test.txt | grep -vi 'name'

grep -vi 'name' test.txt

使用sort排序

sort [-ntkr] 文件名 :对输出内容直接排序,默认按照每行的第一个字符进行排序

-n 采取数字排序,而非默认的字符

-t 指定分割符

-k 指定第几列,结合分割符使用,如csv文件

-r 反向排序,降序

使用uniq删除重复内容

uniq [-ic] :删除重复的行,或者统计出完全相同的行出现的次数

-i 忽略大小写

-c 计算重复行数

uniq的作用在于删除连续的完全一致的行,一般都需要和sort一起使用

cat test.txt | sort | uniq -c

使用cut截取文本

cut -f 指定的列 -d '分割符' :它能处理的对象是一行文本,可以指定分割符,打印出以分割符隔开的具体某一列或者某几列,若没有分割符,可打印指定的字符。

cat /etc/passwd | cut -f1,6 -d ':'

cat /etc/passwd | cut -f1,6-7 -d ':'

cat /etc/passwd | cut -c1-5,7-10

使用tr做文本替换

文本转换或者删除

替换小写字母为大写字母: cat /etc/passwd | tr 'a-z' 'A-Z'

删除冒号: cat /etc/passwd | tr -d ':'

使用paste做文本合并

将文本按照行进行合并,中间使用tab隔开,也可以指定分割符

paste -d ':' a.txt b.txt

使用split分割大文件

按照梅500行进行分割成小文件: split -l 500 bigfile.txt small_file_

二进制文件只能按照大小进行分割:split -b 64m bigfile.txt small_file_