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