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

sed系列文章

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

本文主要讲解如何删除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

猜你喜欢

转载自blog.csdn.net/weixin_49114503/article/details/134919650