sed命令替换文件内容

reference:

https://www.cnblogs.com/starof/p/4181985.html

抓取目录名并修改

ls | grep "XXX" > 1.txt

sed命令下批量替换文件内容   

格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` 文件名

-i 表示inplace edit,就地修改文件

 -r 表示搜索子目录

 -l 表示输出匹配的文件名
s表示替换,d表示删除

示例:sed -i "s/shan/hua/g"  lishan.txt

          把当前目录下lishan.txt里的shan都替换为hua

sed的其他用法如下:

1、删除行首空格
   sed 's/^[ ]*//g' filename
   sed 's/^ *//g' filename
   sed 's/^[[:space:]]*//g' filename

2、行后和行前添加新行
   行后:sed 's/pattern/& /g' filename
   行前:sed 's/pattern/ &/g' filename
   &代表pattern

3、使用变量替换(使用双引号)
    sed -e "s/$var1/$var2/g" filename

4、在第一行前插入文本
    sed -i '1 i插入字符串' filename

5、在最后一行插入
    sed -i '$ a插入字符串' filename

6、在匹配行前插入
    sed -i '/pattern/ i "插入字符串"' filename

7、在匹配行后插入
   sed -i '/pattern/ a "插入字符串"' filename

8、删除文本中空行和空格组成的行以及#号注释的行
   grep -v ^# filename | sed /^[[:space:]]*$/d | sed /^$/d

1、删除文档的第一行

sed -i '1d' <file>

2、删除文档的最后一行
sed -i '$d' <file>

3、在文档指定行中增加一行
例如文档如下:
echo "1";
echo "2";
echo "4";
echo "5";
想要在echo "2";后面加上一条echo "3";可以用如下命令
sed -i '/echo "2";/aecho "3";' <file>
之所以用分号,是因为文本中本来就有,也就是说分号不是必须的.
抽象出来就是: sed -i '/* /a*' <file>

4、删除文件中的第k行,例如k=3
sed -i '3d' <file>

5、删除文件中包含某个关键字开头的所有行
sed -i '/^QWQ/d' <file>

6、删除文件中包含某个关键字的所有行
sed -i '/QWQ/d' <file>

原文地址:https://www.cnblogs.com/xuefy/p/11612736.html