sed命令学习笔记
学习sed命令,对使用Shell灵活处理文本文件至关重要。sed命令功能强大,但其复杂性在于选项繁多,这使得脚本的可读性降低,尤其是一些不常用的功能(如模式空间)的使用,容易遗忘。因此,记录常用的命令,可帮助自己快速查阅。以下是一些常用sed命令示例:
1. 常用命令
输出符合规则的行:sed -n '/root/p' mylog.txt
删除指定内容:sed '/root/d' mylog.txt
替换并输出:sed -n 's/root/my/p' mylog.txt
全局替换,默认每行只替换第一个:sed 's/root/my/g' mylog.txt
使用引用匹配模式:sed 's/root/my&/' mylog.txt
执行多个命令:sed 's/root/my/' -e 's/2015/2016/' mylog.txt
替换所有文件中的特定字符:sed -i 's/|/\,/g' *.txt
在文件开头添加竖线:sed -i 's/^/|/g' mylog.txt
在文件末尾添加竖线:sed -i 's/$/|/g' mylog.txt
删除文件第一行:sed -i '1d' aug_unlimit_output.csv
删除回车符:sed -i "s/\r//g" test.txt
运行模式
sed为流编辑命令,逐行读取文件,处理后输出,不保留缓存。
命令组成:sed [选项] 动作 [文件]
选项示例:
-e 执行脚本,支持执行多个命令。
-f 执行脚本文件。
-n 只输出符合规则的行。
-i 直接修改原文件。
-r 使用扩展正则表达式。
动作示例:
s 替换文本。
p 打印输出。
q 结束处理。
d 删除行。
i 在当前行前插入文本。
a 在当前行后插入文本。
c 替换整行文本。
y 映射文本。
n 下一行。
N 上一行。
替换标记:s/查找/替换/标记
标记解释:无标记默认替换第一处;数字替换指定第几处;g替换所有。
特殊字符:反斜杠(\)。
寻址示例:
第2行替换:sed '2s/dog/cat/' mylog.txt
第1-3行替换:sed '1,3s/dog/cat/' mylog.txt
从第2行开始替换:sed '2,$s/dog/cat/' mylog.txt
模式寻址示例:
只替换包含特定模式的行:sed '/dog1/s/dog/cat/' mylog.txt
行寻址+模式寻址示例:sed '2,3{/dog/s/dog/cat/}' mylog.txt
模式寻址+行寻址示例:sed '/dog/{2s/dog/cat/}' mylog.txt
删除行示例:
删除所有行:sed 'd' mylog.txt
删除首行:sed '1d' mylog.txt
删除特定范围内的行:sed '2,$d' mylog.txt
删除包含特定模式的行:sed '/dog1/d' mylog.txt
删除特定范围内的包含特定模式的行:sed '2,${/dog/d}' mylog.txt
插入文本示例:
插入前边文本:echo 'Test line 1' | sed 'i<Test line 2'
后边添加文本:echo 'Test line 1' | sed 'a<Test line 2'
行寻址插入文本:sed '1i ew line 1' mylog.txt
最后一行插入文本:sed '$a ew line 1' mylog.txt
修改整行内容示例:
寻址修改:sed '2c\change line 2' mylog.txt
文本过滤修改:sed '/dog2/c\change line 2' mylog.txt
映射示例:
字符替换:sed 'y/123/abc/' mylog.txt
打印示例:
仅打印符合规则的行:sed -n '/dog1/p' mylog.txt
打印指定行范围内的行:sed -n '2,3p' mylog.txt
显示修改前和修改后内容:sed -n '{/dog1/p ; s/dog1/cat1/p}' mylog.txt
高级命令
多行命令示例:
删除指定行的下一行:sed '/dog1/{n;d}' mylog.txt
删除两行:sed '/dog1/{N;d}' mylog.txt
删除第一行:sed '/dog1/{N;D}' mylog.txt
将下一行添加到当前行示例:
合并两行并删除换行符:sed '/dog1/{N;s/ //}' mylog.txt
排除命令示例:
仅打印非特定模式的行:sed -n '/dog1/!p' mylog.txt
最后一行不合并示例:sed -n '$!N ; s/lazy dog/lazy cat/' mylog.txt
分支标签示例:
跳转到标签:sed '{/A/b lab1; s/dog/cat/ ; :lab1 s/dog/pig/}' mylog.txt
测试示例:
未匹配则跳转到标签:sed '{s/dog1/cat/; t ; s/dog/pig/}' mylog.txt
循环示例:
替换一个逗号:echo 'This,is,a,test' | sed -n '{:start ; s/,/ /1p ; /,/b start}'
删除空行示例:
模式空间和保持空间示例:
倒序打印:sed -n '{1!G ; h ; $p}' mylog.txt
倒序打印另一方法:sed '1!G ; h ; $!d' mylog.txt
每行后添加空行:sed 'G' mylog.txt
每行间添加空行,最后一行不添加:sed '$!G' mylog.txt
每行前添加空行:sed 'x;p;x' mylog.txt
每行前添加空行,第一行不添加:sed '1!{x;p;x}' mylog.txt
替换换行符示例:
合并所有行:sed ':loop ; N ; $!b loop ; s/ /--/g' mylog.txt
合并非"结尾的换行示例:
替换换行符Python版示例:
使用Python pandas读取CSV并替换换行符:import pandas as pd; df=pd.read_csv("add.csv",header=None); for i in range(df.shape[1]): if df.dtypes[i]=='object': df[i]=df[i].str.replace('\r| ',''); df.to_csv('pd.csv',index=None,header=None)
注意:ksh版本的sed命令与bash版本功能差异较大,ksh版本可能无法实现某些功能。
温馨提示:内容为网友见解,仅供参考
sed命令学习笔记
打印指定行范围内的行:sed -n '2,3p' mylog.txt 显示修改前和修改后内容:sed -n '{\/dog1\/p ; s\/dog1\/cat1\/p}' mylog.txt 高级命令 多行命令示例:删除指定行的下一行:sed '\/dog1\/{n;d}' mylog.txt 删除两行:sed '\/dog1\/{N;d}' mylog.txt 删除第一行:sed '\/dog1\/{N...
日拱一卒,麻省理工CS入门课,命令行这样用也太帅了
深入探索数据处理工具在数据处理过程中,选择合适的工具至关重要。本节将详细介绍sed和正则表达式(Regular expressions),它们是处理文本数据的利器。sed是一款流编辑器,能够以简洁的命令对文本进行修改,而非直接编辑整个文件内容。正则表达式是其核心功能,通过学习它们,我们能更高效地处理数据,如过滤、替...
如何才能学好linux?
同理学会了linux的命令之后,那么可以学习一下shell的基本语句,awk sed的学习,用shell实现一些特定功能的脚本,比如可以通过cat \/proc\/cpuinfo加上awk命令来实现对cpu相关信息的统计等 如果你在Linux上是一个小白请看下面的回答~ 想学好Linux,先问自己几个问题。 1. 你对计算机感兴趣吗? 2. 为什么学习Linux(他能...
南京大学计算机基础 PA1 课程笔记
在处理文件时,rg和fd提供模糊搜索,而正则表达式用于精确替换。vim中的:s命令和命令行的sed有相似功能。理解进程运行时间,cmd_c中的cpu_exec参数-1代表无限执行。指针自增涉及指针指向下一个存储单元。程序结束的指示通常由execv调用的libc_main函数和exit函数控制。优雅退出需要在cmd_q设置特定状态,并...
新手如何自学linux
第二阶段:linux系统管理进阶 linux系统管理进阶包括:Linux定时任务、Linux用户管理、Linux磁盘与文件系统、Linux三剑客之sed命令等。第三阶段:Linux Shell基础 Linux Shell基础包括:Shell编程基础、Linux三剑客之awk命令等。第四阶段:Linux网络基础 第五阶段:Linux网络服务 Linux网络服务包括:集群实战架构...
怎样从零开始学习linux
1. 基本功要扎实 学习任何一种语言,必备的基本功是必须要有的,一方面可以提高效率,另一方面可以拓宽思路。对于Linux基本知识的学习,对一些初学者来说是枯燥乏味的,可以通过理解再背诵的方式先进行代码及语法的学习,然后进行实践操作,必须手动输入命令行,不要借助工具,这样可以更快速有效的掌握Linux。
浅谈如何学习linux(强烈推荐)
1. 命令是必须要学的,linux常用的命令大概在80个左右,这些常用命令一定要熟练掌握。2. 掌握linux软件包的常用安装方法,例如源码安装,rpm方式安装等等。3. 学习安装设备驱动程序(比如网卡、显卡驱动) 4. 熟悉Grub\/Lilo引导程序及简单的修复操作。 5. 熟悉Linux文件系统和目录结构以及linux基本运行原理。 6. 掌握vi...
学习linux系统,看那几本书比较好
《鸟哥的Linux私房菜 基础学习篇(第三版)》,鸟哥著 一本大而全的LINUX入门指点,主要讲解Linux一些命令,Linux的实际操作及Linux基础理论。很适合Linux初学者学习。《嵌入式 Linux 应用开发完全手册》,韦东山著 这本书综合了常见的嵌入式开发经验技巧,以及常见的嵌入式系统应用,系统移植,调试及异常处理...
FPGA高速接口JESD204B学习笔记
ADC接口的历史发展轨迹清晰可见,从早期的CMOS技术过渡到LVDS,最终稳定在JESD204B,LVDS的优势在于抗干扰和快速响应,FPGA通过IDELAY调整可以轻松适应不同环境下的时序要求。JESD204B接口信号丰富,如数据线、同步信号等,多通道传输且无信道漂移,特别是在ADC应用中,接口包括SEDOUT、SYSREF和SYNC,N'表示...
两个月能不能入门Linux找到运维工作?
制定合适的学习时间,两个月入门Linux还是可以,但是能否找到工作就难以确定了,单纯的入门知识找工作还是比较困难,两个月的学习时间太短,学习Linux不仅只懂Linux系统就可以了,还需要掌握更多的知识,如果想要通过学习Linux运维找到工作,建议可以参加培训,入门到精通五个月的时间,省时省力。