Shell文本处理工具

一、grep

1、grep与egrep的关系

grep -E = egrep
grep支持基本正则表达式
egrep对于基础和扩展的正则表达式都支持

2、实验内容

(1)、实验素材准备

在这里插入图片描述

(2)、实验步骤

grep (参数) xxx 文件名

grep参数意义
关键字查询带有关键字的行
-E xx/xxx筛选含有这两种关键字之一的内容
-e xx -e xxx与上一条等价
-i大小写不敏感
-n显示筛选行的行号
-B5显示筛选行及其之后的5行
-A5显示筛选行及之前的5行
-v排除某个关键字,即取反

过滤文件中有root关键字的部分

在这里插入图片描述

过滤文件中含有root/bash关键字的行

在这里插入图片描述

-E “root|nologin” == -e root -e nologin

在这里插入图片描述

-i 表示忽略大小写,是大小写不敏感型

在这里插入图片描述

-n 关键字 表示过滤文件中含有关键字的行及其行号

在这里插入图片描述

-5 关键字 表示过滤文件中含有关键字行及其上5行和下5行

在这里插入图片描述

含有关键字行的后5行

在这里插入图片描述

不含关键字的行

在这里插入图片描述

二、sed

命令格式: sed 参数 命令 处理对象 或是 sed 参数 处理对象 -f 处理规则文件

对字符的处理

p	显示(present)

sed -n 5p filename##显示第五行
sed -n 3,5p filename##显示3到5行
sed -ne "3p;5p filename##显示3和5行
sed -ne 1,5p filename##显示1-5行
sed -ne '5,$p' filename##显示5到最后以行
sed -n '/^#/p' fstab ##显示以#开头的行

在这里插入图片描述

显示第五行

在这里插入图片描述

显示1和5行

在这里插入图片描述

显示1到5行

在这里插入图片描述

第5行到最后一行

在这里插入图片描述

显示以test开头的行
在这里插入图片描述

d	删除(delete)

sed 5d filename##删除第五行
sed '/^#/d' filename##把#开头的行删除
sed '/^UUID/!d' fstab##除了UUID以外的行都删除
sed -e '5,$d' filename

在这里插入图片描述

删除以test开头的行

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

删除三行及三行以后的内容

在这里插入图片描述

a	添加(add)在指定内容之后

sed -e '$a hello world' filename
sed -e '$a hello\nworld' filename
sed -e '/^#/a hello world' filename

在文件末尾添加hello world内容

在这里插入图片描述

在文件末尾添加hello world换行内容

在这里插入图片描述

c	替换(change)

sed -e '/^#/c hello world' file	#将文件以#开头的内容替换为hello world
sed '5chello world' file	#将文件中的第5行替换为hello world

在这里插入图片描述

w	把符合的行写到指定文件中(write)
sed '/^UUID/w westofile' westos ##把westos中UUID开头的行写入westosfile中

把passwd中mail开头的行写入test中

在这里插入图片描述
写入后的test文件
在这里插入图片描述

i	插入(insert)
sed '5ihello westos' filename 

在文件的第一行之前插入hello westos内容

在这里插入图片描述

r	整合文件(re)
sed '5r haha' westos ##

将文件haha的内容追加到passwd文件的第五行之后

在这里插入图片描述

三、awk

1、用法

awk -F 分割符 BEGIN {操作1} {操作2} END {操作3} FILENAME

参数意义
NR行数
NF列数
FILENAME文件名称本身
XXXXX变量名
“XXXXX”字符串
bash$条件
/条件1/条件2/条件1或者条件2
/条件1/
/条件1/&&条件2/条件1并且条件2
参数意义
$0所有的列
$1第一列
$2第二列

2、实验内容

在passwd中,以:为分割符,以root为开始打印每一行的第一列并以end结束整个打印
在这里插入图片描述

在passwd中,打印行数
在这里插入图片描述
在passwd中,打印列数
在这里插入图片描述
打印出数据的来源文件名
在这里插入图片描述
以westos为变量名,每次循环加一,直至结束后输出行数
在这里插入图片描述
输出以nologin结尾的行的第1,3列
在这里插入图片描述
同上,但当要求的列数超过本身的列数时,会只显示存在的那一列。
在这里插入图片描述
条件中两个元素的或关系
在这里插入图片描述
两个条件的或关系
在这里插入图片描述
两个条件的并关系
在这里插入图片描述
第七列以bash结尾的内容和它的反命题
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shell中,我们可以使用一些命令来处理文本文件,例如cut、awk等。 cut命令用于从文本文件中提取指定的字段或列。它可以按照指定的分隔符将每行切割成多个字段,并选择提取需要的字段。比如,可以使用cut命令提取文件中的某一列数据或指定的几列数据。 awk命令是一个强大的文本处理工具,它可以根据指定的规则和动作来处理文本文件。可以使用awk命令对文件进行分割、查找、替换、删除等操作。通过在awk命令中指定BEGIN和END标记,可以在处理文本内容之前和之后执行相应的动作。 需要注意的是,在处理文本文件时,awk会先读入第一行,然后再执行相应的动作。这意味着在读入第一行时,自定义的分隔符可能尚未生效。为了避免这种问题,可以使用BEGIN标记在处理文本之前设置自定义分隔符。 总结起来,在Shell中可以使用cut和awk等命令进行文本处理,cut用于提取字段或列,awk用于更复杂的文本处理操作,可以根据自定义规则进行分割、查找、替换等操作。使用BEGIN标记可以在处理文本之前设置自定义分隔符。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Shell编程之文本处理](https://blog.csdn.net/u012948302/article/details/121475375)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Shell 编程之文本的处理](https://blog.csdn.net/young2415/article/details/100045070)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值