linux sed命令删除一行/多行_sed删除第一行/linux删除文件某一行

五月天的尾巴 2024-06-23 08:37:03 阅读 78

sed系列文章

linux常用命令(9):sed命令(编辑/替换/删除文本)linux sed命令删除一行/多行_sed删除第一行/linux删除文件某一行linux sed批量修改替换文件中的内容/sed特殊字符

文章目录

sed系列文章一、sed删除1.1、sed删除某一行内容/删除最后一行1.2、sed删除多行1.3、删除所有空白行1.4、删除匹配的行1.5、删除以a开头的行1.6、反向删除1.7、删除空格 二、扩展2.1、-i命令

本文主要讲解如何删除txt文件中的某一行内容,sed命令更多详细内容参考《linux常用命令(9):sed命令(编辑/替换/删除文本)》

一、sed删除

编辑命令 含义
1d 删除第1行的内容
1,5d 删除1行到5行的内容
2,+5d 删除第2行以及往下的5行的内容
/pattern1/d 删除每行中匹配到pattern1的行内容
/pattern1/,/pattern2/d 删除匹配到pattern1的行直到匹配到pattern2的所有行内容
/pattern1/,10d 删除匹配到pattern1的行到10行的所有行内容
10,/pattern1/d 删除第10行直到匹配到pattern1的所有内容

1.1、sed删除某一行内容/删除最后一行

sed -i '1d' filename 删除文件第一行sed -i '2d' filename 删除第二行sed -i 'nd' filename 删除第n行/n需要是实际数字sed -i '$d' filename 删除最后一行

执行效果:

在这里插入图片描述

若指定的行不存在,则不删除

在这里插入图片描述

1.2、sed删除多行

sed -i '1,3d' filename 删除1-3行sed -i '3,$d' filename 删除第3行到最后一行

执行效果:

在这里插入图片描述

在这里插入图片描述

1.3、删除所有空白行

# 删除所有空白行sed -i '/^$/d' filename

在这里插入图片描述

1.4、删除匹配的行

sed -i '/某字符串/d' filename

命令解释:

/某字符串/ 匹配//中间放的字符串的行,加^表示匹配行首,如:

/^+/ 匹配行首字符串为“+”的行

[root@centos test]# cat aa.txt| 1 | tom | 男 || 2 | jack| 女 || 3 | cary| 男 || 4 | cody| 女 |[root@centos test]# sed '/男/d' aa.txt -- 删除有男的行| 2 | jack| 女 || 4 | cody| 女 |[root@centos test]#

1.5、删除以a开头的行

删除以a开头的行sed -i '/^a.*/d' tmp.txt

1.6、反向删除

# 删除不包含green的行sed -i '/green/!d' test.txt

1.7、删除空格

删除行首空格 sed 's/^[ \t]*//g'删除行末空格 sed 's/[ \t]*$//g'删除所有的空格 sed 's/[[:space:]]//g'

其中,sed 's/^[ ]*//g' 表示使用空字符匹配行首为空格的字符串;依次拆解释义: 字符 's' 表示替换; 字符 '/' 表示作为分隔符; 字符 '^' 表示开头; 字符 '$' 表示结尾; 字符 '[ ]' 表示匹配指定字符范围内的任意单个字符,[ ]包含一个空格; 字符 '*' 作为通配符,匹配0个或任意多个; 字符 'g’ 表示全部匹配;

二、扩展

2.1、-i命令

-i:直接修改文档读取的内容,不在屏幕上输出

sed 把当前正在处理的行保存在一个临时缓存区中,这个缓存区称为模式空间或临时缓冲。sed默认不会直接修改文件中的值,加-i后会直接修改文件中的内容。

在这里插入图片描述

整理本文时发现一些其他文章值得借鉴的: https://blog.csdn.net/bandaoyu/article/details/120047612



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。