222bbb:sed 2024-04-03 00:56:43 0 0 1.sed替换特定行的字符串 文本内容如下: aaa bbb ccc 111 222 abc eee fff ggg 111 222 efg 111 222 aaa ccc ddd 111 222 acd 需求: 在有aaa的行中,将 111 替换为 AAA,将 222 替换为 BBB 即,输出结果为: aaa bbb ccc AAA BBB abc eee fff ggg 111 222 efg 111 222 aaa ccc ddd AAA BBB acd 方法如下: sed -i '/aaa/ { s/111/AAA/g; s/222/BBB/g; }' filename 把某个用户注销掉: sed -i '/shaoping/ { s/\/bin\/bash/\/sbin\/nologin/g; }' /etc/passwd 2.在文档中 增加一行 或 删除一行 有时候我们会用脚本,来修改文档,比如在文档中增加一行或减少一行 echo "1"; echo "2"; echo "4"; echo "5"; 如上例子,想要在echo "2";后面加上一条echo "3";可以用如下命令 sed -i '/echo \"2\";/a\echo \"3\";' test.sh 之所以用分号,是因为文本中本来就有。也就是说分号不是必须的! 抽象出来就是: sed -i '/* /a*' filename Linux shell脚本 删除文件中的一行内容 比如:在1.txt里有以下内容: HELLO=1 NI=2 WORLD=3 I Love China. Love all .... 如果是要删除第三行: sed -i '3d' 1.txt 如果删除以Love开头的行 sed -i '/^Love/d' 1.txt 删除包含Love的行 sed -i '/Love/d' 1.txt 一、在某行的前一行或后一行添加内容 具休操作如下: #匹配行前加 而在书写的时候为便与区分,往往会在i和a前面加一个反加一个反斜扛 。代码就变成了: 这就就可以很方便的看出要在某一行前或某一行后加入什么内容 。不过经常我记不住a 、i 那个是前那个是后。我的记法是a = after ,i = in front 。这样就知道 i 是前,a 是后了。不过官方的man文件里不是这样解释的,man文件里是这样解释的: 而且其可以配合find查找的内容处理,如下: 二、在某行(指具体行号)前或后加一行内容 这里指定的行号是第四行 。 三、删除指定行的上一行或下一行 这个写起来有点长,一般如果不是shell里的需要,我更喜欢用vim去处理。另外需要注意的是,在vim里如果替换的内容里tab这样的符号是需要在编辑模式下分别按ctrl+v 和crtl+I ,而不是不停的几个空格 使用地址范围。 1. 删除file.txt的1~3行 1 sed -i '1,3d' file.txt -i 选项用于直接修改原文件。 2. 删除file.txt第4行及之后的所有行 1 sed -i '4,$d' file.txt $表示文件的最后一行。 收藏(0)