菜鸟学Linux 第017篇笔记 sed命令的使用

简介:

菜鸟学Linux 第017篇笔记 sed命令的使用





三大文本处理工具:

grep (print lines matching a pattern)

sed (Stream EDitor for filtering and transforming text)

awk (pattern scanning and processing language)



sed: Stream EDitor

行编辑器 (全屏编辑器:vi)


sed模式空间


sed保留空间(高级功能)


sed默认不编辑原文件,仅对模式空间中的数据做处理。

而后将处理结束后,将模式空间打印到屏幕。


使用格式

sed [options] 'AddressCommand' file1 file2 ...\

Options

-n 不打印模式空间

-i 直接修改原文件

-e script 可以同时执行多个AddressCommand

-f /path/file  

-r 表示使用扩展正则表达式

Address:

1. StartLine,EndLine

e.g. 1,100

$:最后一行

sed "1,2d" /etc/fstab 

2. /RegExp/ pattern  正则表达式

e.g. /^root/

sed "/oot/d" /etc/fstab

3. /pattern1/,/pattern2/  

表示第一次被pattern1匹配到的行,至第二次被pattern2匹配到的中间行。

4. LineNumber

指定的行

5. StartLine,+N 

从指定的行开始,向后的N行 一共N+1行

sed '1,+2d' /etc/fstab 

Command:

d 表示删除符合条件的行;

p 显示匹配到的行

a \stirng; 在指定的行后面追加新行,内容为string 加多行\n表示换行

i \stirng; 在指定的行前面追加新行,内容为string 加多行\n表示换行

r FILE Append text read from filename.

w FILE Write the current pattern space to filename.

s/patter/string/ 查找并替换,默认只替换每行中第一次

被模式匹配到的字符串

s%%% s### s@@@

加修饰符

g 全局替换

i 忽略字符大小写

&表示后向引用

小练习:

1、删除/etc/grub.conf文件中行首的空白符;

2、替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;

3、删除/etc/inittab文件中的空白行;

4、删除/etc/inittab文件中开头的#号;

5、删除某文件中开头的#号以及后面的空白字符,

但要求#号后面必须有空白字符才可删除;

6、删除某文件中以空白字符后面跟#类开头的空白字符和#;

7、取出一个文件路径的目录名称;(待定,小的做不到,后期学习后再做)

key:

1. sed 's/^[[:space:]]//' /etc/grub.conf 

2. sed '$s/[[:digit:]]/5/' /etc/inittab

3. sed '/^$/d' /etc/inittab 

4. sed 's/#//' /etc/inittab 

5. sed -r 's/^#[[:space:]]+//' match.txt 

6. sed -r 's/^[[:space:]]+#//' match.txt

7. 未研究出来!!!

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1863697如需转载请自行联系原作者


Winthcloud

相关文章
|
24天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
50 14
Linux 10 个“who”命令示例
|
3天前
|
Linux
linux查看目录下的文件夹命令,find查找某个目录,但是不包括这个目录本身?
通过本文的介绍,您应该对如何在 Linux 系统中查看目录下的文件夹以及使用 `find` 命令查找特定目录内容并排除该目录本身有了清晰的理解。掌握这些命令和技巧,可以大大提高日常文件管理和查找操作的效率。 在实际应用中,灵活使用这些命令和参数,可以帮助您快速定位和管理文件和目录,满足各种复杂的文件系统操作需求。
23 8
|
12天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
94 20
|
13天前
|
网络协议 Linux 应用服务中间件
kali的常用命令汇总Linux
kali的常用命令汇总linux
38 7
|
1月前
|
Linux 数据库
Linux中第一次使用locate命令报错?????
在Linux CentOS7系统中,使用`locate`命令时出现“command not found”错误,原因是缺少`mlocate`包。解决方法是通过`yum install mlocate -y`或`apt-get install mlocate`安装该包,并执行`updatedb`更新数据库以解决后续的“can not stat”错误。
35 9
|
1月前
|
监控 网络协议 Linux
Linux netstat 命令详解
Linux netstat 命令详解
|
1月前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
145 3
|
Unix Linux 测试技术
|
4月前
|
Linux Perl
在Linux中,如何使用请用 cut 或者 awk,sed命令取出 linux 中 eth0 的 IP 地址?
在Linux中,如何使用请用 cut 或者 awk,sed命令取出 linux 中 eth0 的 IP 地址?
|
3月前
|
Linux Perl
Linux之sed命令
Linux之sed命令