Linux管道过滤
- 8.1 cut命令,剪切指定范围的字段
- 8.2 grep命令,在文本中查找匹配字符串
- 8.3 wc命令,计数工具
- 8.4 sort排序命令
- 8.5 uniq去重命令
- 8.6 sed进行文本替换过滤
更加完整的Linux常用指令
在Linux中,管道(pipeline)是一种非常强大的特性,它允许将一个命令的输出作为另一个命令的输入,从而实现数据流的传递和处理。通过管道,可以轻松地将多个命令组合起来,以实现复杂的数据处理任务。过滤(filtering)则是管道中常见的一种操作,用于对数据流进行筛选、转换或处理
8.1 cut命令,剪切指定范围的字段
# 打印 /etc/passwd 文件中以 : 为分隔符的第 1 个字段和第 6 个字段分别表示用户名和其家目录
cut /etc/passwd -d ':' -f 1,6# 打印/etc/passwd文件中每一行的前N个字符
# 前五个(包含第五个)
cut /etc/passwd -c -5
# 前五个之后的(包含第五个)
cut /etc/passwd -c 5-
# 第五个
cut /etc/passwd -c 5
# 2 到 5 之间的(包含第五个)
cut /etc/passwd -c 2-5
8.2 grep命令,在文本中查找匹配字符串
# 搜索/home/shiyanlou目录下所有包含"shiyanlou"的文本文件
# 并显示出现在文本中的行号
# -r:递归搜索子目录
# -n:打印匹配项行号
# -I:忽略二进制文件
grep -rnI "shiyanlou" ~# 查找指定ssh服务进程
ps -ef | grep sshd
8.3 wc命令,计数工具
# 显示/etc/passwd中的行数
wc -l /etc/passwd
# 单词数
wc -w /etc/passwd
# 字节数
wc -c /etc/passwd
# 字符数
wc -m /etc/passwd
# 最长行字节数
wc -L /etc/passwd
8.4 sort排序命令
# 默认为字典排序
cat /etc/passwd | sort# 按特定字段排序
# -t参数,指定分割符为':'
# -k参数:字段号,指定对哪个字段进行排序
cat /etc/passwd | sort -t ':' -k 3
8.5 uniq去重命令
# 将file.txt文件的内容通过管道先传递给sort排序,然后再通过uniq命令去除相邻的重复行
cat file.txt | sort | uniq
8.6 sed进行文本替换过滤
# 将file.txt文件的内容通过管道传递给sed命令,sed会将所有出现的"old"替换为"new"
cat file.txt | sed 's/old/new/g'