Linux"三剑客"

在 Linux 世界中,“三剑客”通常指的是三个非常强大且常用的文本处理工具:grep、sed 和 awk。它们各自擅长不同的任务,但结合起来可以完成复杂的文本处理工作。以下是对这三个工具的详细介绍:

1. grep

用途:grep 是一个用于搜索文本的工具,能够根据正则表达式匹配文件中的行。
基本用法

grep "pattern" filename

"pattern":要查找的字符串或正则表达式。
filename:要搜索的文件名。如果省略文件名,则从标准输入读取。
常见选项

  • -i:忽略大小写。
  • -v:反向匹配,即显示不包含模式的行。
  • -r:递归搜索目录下的所有文件。
  • -n:显示匹配行的行号。
  • -E:使用扩展正则表达式(ERE)。
    示例
  1. 基本搜索
grep "hello" file.txt
  1. 忽略大小写搜索
grep -i "hello" file.txt
  1. 反向匹配
grep -v "hello" file.txt
  1. 递归搜索
grep -r "hello" /path/to/directory

2. sed

用途:sed 是一个流编辑器,主要用于对输入流(文件或管道)进行基本的文本转换和过滤。
基本用法

sed 's/old-pattern/new-pattern/' filename
  • 's/old-pattern/new-pattern/':替换命令,将 old-pattern 替换为 new-pattern。
  • filename:要处理的文件名。如果省略文件名,则从标准输入读取。
    常见选项
  • -i:直接修改文件内容。
  • -e:允许多个编辑命令。
  • -n:静默模式,只打印经过处理。
    示例
  1. 基本替换
sed 's/foo/bar/' file.txt
  1. 直接修改文件
sed -i 's/foo/bar/' file.txt
  1. 多次替换
sed -e 's/foo/bar/' -e 's/hello/world/' file.txt

4.仅打印匹配行

sed -n '/pattern/p' file.txt
  1. 删除特定行
sed '3d' file.txt  # 删除第3行
sed '/pattern/d' file.txt  # 删除包含pattern的行

3. awk

用途:awk 是一种编程语言,专门用于处理和分析文本文件。它擅长按列处理数据,并且可以执行复杂的文本操作。
基本用法

awk '{action}' filename
  • {action}:对每行执行的操作。
  • filename:要处理的文件名。如果省略文件名,则从标准输入读取
    常见选项
  • -F:指定字段分隔符。
  • -v:定义变量。
    1。打印文件的第二列
awk '{print $2}' file.txt

2.使用逗号作为分隔符

awk -F',' '{print $2}' file.csv

3.条件筛选

awk '$2 == "foo" {print $0}' file.txt  # 打印第二列为"foo"的行

4.计算总和

awk '{sum += $1} END {print sum}' file.txt  # 计算第一列的总和

5.多条件处理

awk '$1 > 10 && $2 == "foo" {print $0}' file.txt  # 打印第一列大于10且第二列为"foo"的行

总结
grep:用于搜索文本,支持正则表达式匹配。
sed:用于文本替换和过滤,适合简单的文本编辑任务。
awk:功能强大的文本处理工具,适合复杂的数据处理和分析任务。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容