菜鸟学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

相关文章
|
11天前
|
NoSQL Linux Shell
常用的 Linux 命令
常用的 Linux 命令
33 9
|
1天前
|
Linux Android开发
Linux(6)CH9434 SPI调试笔记
Linux(6)CH9434 SPI调试笔记
4 0
|
1天前
|
Linux
Linux(5)WIFI/BT调试笔记
Linux(5)WIFI/BT调试笔记
7 0
|
2天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
18 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
2天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
2天前
|
Linux Perl
Linux系统替换字符串常用命令
请注意,`sed`命令可以非常强大,可以根据不同的需求使用不同的选项和正则表达式来进行更复杂的字符串替换操作。
16 0
|
5天前
|
安全 Linux 开发工具
Linux中可引起文件时间戳改变的相关命令
【4月更文挑战第12天】Linux中可引起文件时间戳改变的相关命令
11 0
|
6天前
|
域名解析 网络协议 Linux
Linux 中的 Nslookup 命令怎么使用?
【4月更文挑战第12天】
25 6
Linux 中的 Nslookup 命令怎么使用?
|
7天前
|
运维 网络协议 Unix
18.系统知识-Linux常用命令
18.系统知识-Linux常用命令
|
7天前
|
网络协议 Ubuntu Linux
Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载
Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载