【小菜鸟之---Linux基础-三剑客sed,awk,grep】

本文详细介绍了grep、sed和awk这三种在Linux和Unix系统中常用的文本处理工具,分别讲述了它们的基本语法、常用选项和用法,以及它们之间的主要区别,着重于grep的搜索功能,sed的流式操作,和awk的结构化数据处理能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【grep】

grep 是一个强大的文本搜索工具,通常在Linux和Unix系统中使用。

grep 命令的基本语法为:
	grep [options] pattern [file...]  
        pattern 是您要搜索的模式,可以是简单的字符串或正则表达式。
        file 是要在其中搜索模式的文件名。如果不指定文件名,则 grep 将从标准输入中读取数据。
        -i:忽略大小写
        -o:显示匹配本身
        -v:显示不被匹配的项
常用grep选项和用法:
    1、在文件中搜索指定模式:
        grep 'pattern' file.txt
    2、递归搜索目录下的所有文件
        grep -r 'pattern' directory/
    3、忽略大小写:
        grep -n 'pattern' file.txt
    4、显示匹配行的行号:
        grep -n 'pattern' file.txt

    5、显示不匹配的行
        grep -v 'pattern' file.txt

    6、显示匹配行之前/之后的行:
        grep -B 2 'pattern' file.txt  # 显示匹配行之前的2行
        grep -A 2 'pattern' file.txt  # 显示匹配行之后的2行
        grep -C 2 'pattern'n file.txt  # 显示匹配行前后各2行

    7、使用正则表达式进行搜索:
        grep 'pattern.*' file.txt

    8、. \用法
        grep '.s' file.txt # (is,as ,s, .代表任意)
        grep '\.' file.txt # (找出文中所有的. )

【sed】

sed 是一种流式文本编辑器,常用于对文本进行流式处理和转换。
它可以根据用户提供的编辑命令对文本进行替换、删除、插入等操作。
sed 在Unix/Linux系统中被广泛应用,特别是在Shell脚本和命令行中用于批量处理文本数据。
常见的 sed 命令和用法:

    1、替换文本中的指定字符串:
        sed 's/old/new/' file.txt
            
    2、全局替换文本中的指定字符串:
        sed 's/old/new/g' file.txt

    3、删除包含指定字符串的行:(需要-i 保存到文件,否则只是修改了缓存)
        sed '/pattern/d' file.txt

    4、删除空行:
        sed '/^$/d' file.txt

    5、在匹配行前后插入文本:
        sed '/pattern/i\inserted line' file.txt
         # sed "2a 插入信息" file.txt -i (a:在其后,在第二行后一行写入)
         # sed "4i 插入信息" file.txt -i (i:在其前;在第4行前一行写入)
         # sed "4i 插入信息1。\n(换行) 插入信息2。" file.txt -i 

    6、在匹配行后追加文本:
        sed '/pattern/a\appended line' file.txt

    7、打印特定行 (-n常与p一起使用,取消sed的默认输出)
        sed -n '5p' file.txt

    8、保存修改到原文件:
        sed -i 's/old/new/' file.txt

    9、使用正则表达式进行替换和匹配:
        sed 's/^[0-9]*$/number/' file.txt
        
    10、-e选项:使用 -e 选项可以方便地在单个 sed 命令中应用多个编辑命令b
        sed -e 's/old/new/' -e '1,3d' file.txt

【awk】

​ awk 是一种强大的文本处理工具,用于从结构化文本数据中提取和处理信息。
​ 它支持对文本数据进行逐行处理。
​ 并可以根据用户提供的规则和命令进行数据提取、转换和统计。

语法: awk '[可选参数] 模式 {动作}' 文件
awk擅长格式化输出,所以常用的动作就是print,printf
	-F :指定输入文件分隔符
	-v :赋值一个用户自定义变量
	NR: 行数,行号
	NF:列的个数
	FILWNAME:文件名

常见的 awk 命令和用法:
1、打印每行的第一个字段:
    awk '{print $1}' file.txt # $0一整行,$1第一列
    
2、打印指定字段:(第二列,第四列)"字符串"代表字符串,BEGIN数据行读取之前执行,END所有数据读取后执行
    awk '{print "第一列:"$2,"第二列:" $4}' file.txt
    awk 'BEGIN{ print "第一列;第二列"}{print $1 ";"  $2} END{print "The file is end"}'

3、根据条件过滤行:
    awk '$3 > 50' file.txt  # 打印第三列大于50的行

4、使用自定义分隔符(如逗号):
    awk -F',' '{print $1}' file.csv

5、计算列的总和:
    awk '{sum += $1} END {print sum}' file.txt

6、统计行数:
    awk 'END {print NR}' file.txt

7、使用条件判断和循环:
    awk '{if ($2 > 50 && /^[0-9]/ ) print $1}' file.txt

8、格式化输出结果:
    awk '{printf "Name: %-10s Age: %d\n", $1, $2}' file.txt

9、输出第五行到第六行,并显示行号
    awk 'NR==5,NR=6{print NR,$0}' t.txt
    NF是字段数的意思,NR是该行第几个字段
10、模式包括某字符串的行
	awk '/string/ {print $2}'
练习文本矩阵:
11 12 13 14 15 16 17 18 19
21 22 23 24 25 26 27 28 29
31 32 33 34 35 36 37 38 39
41 42 43 44 45 46 47 48 49
51 52 53 54 55 56 57 58 59
61 62 63 64 65 66 67 68 69
71 72 73 74 75 76 77 78 79
81 82 83 84 85 86 87 88 89
91 92 93 94 95 96 97 98 99

Shell: Shell脚本       Command: 命令         File: 文件
Directory: 目录        Permission: 权限      User: 用户
Group: 组              Root: 根              Sudo: Sudo
Package: 软件包        Repository: 仓库      Kernel: 内核
Service: 服务          Daemon: 守护进程      Firewall: 防火墙
Networking: 网络       SSH: SSH             Cron: 定时任务
Backup: 备份           Log: 日志             Monitoring: 监控
Configuration: 配置    Disk: 磁盘            RAID: RAID

【主要区别】

grep 主要用于搜索和匹配文本,适合在文本中查找指定的字符串。
sed 主要用于对文本进行替换、删除、插入等操作,适合批量处理文本数据。
awk 主要用于从结构化文本数据中提取和处理信息,适合进行数据提取、转换和统计。

tip:仅作个人学习笔记使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凉城凉辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值