“Sed skill”的版本间的差异

来自linux中国网wiki
跳到导航 跳到搜索
 
(未显示同一用户的5个中间版本)
第36行: 第36行:
 
[[Sed删除或者替换有关键字的一行]]
 
[[Sed删除或者替换有关键字的一行]]
  
==!==
+
==! and sed支持使用自定义分隔符==
 
<pre>
 
<pre>
 
[root@localhost ~]# cat  /var/spool/cron/root  
 
[root@localhost ~]# cat  /var/spool/cron/root  
第46行: 第46行:
 
#*  *  *  *  *    /root/check.sh
 
#*  *  *  *  *    /root/check.sh
  
</pre>
 
  
 +
写脚本需要替换json串中的路径 脚本如下:
 +
 +
path=/root/baixw/test
 +
 +
sed -i "s/path=.*/path=$path/g" ./sed_path.txt
  
 +
#正确使用办法
 +
path=/root/baixw/test
 +
​sed -i "s?path=.*?path=$path?g" ./sed_path.txt
 +
 +
</pre>
 +
[https://juejin.cn/post/6994075540181221407  sed替换路径字符串遇到的问题]
  
 
== sed输出文件的指定行 输出指定的段落==
 
== sed输出文件的指定行 输出指定的段落==
第57行: 第67行:
  
 
sed -n ‘2,$p’ file //print line 2 to end of line  
 
sed -n ‘2,$p’ file //print line 2 to end of line  
 +
</pre>
 +
 +
==每行的头添or 行尾加字符 ==
 +
<pre>
 +
 +
在每行的头添加字符,比如"HEAD",命令如下:
 +
 +
sed "s/^/HEAD&/g" test.file 
 +
 +
eg  sed "s/^/huagui\//g"  file  # 在每行首加 huagui/
 +
 +
 +
在每行的行尾添加字符,比如“TAIL”,命令如下:
 +
 +
sed "s/$/&TAIL/g" test.file
 
</pre>
 
</pre>
  
第84行: 第109行:
 
sed '$i 添加的内容' file  #这是在最后一行行前添加字符串   
 
sed '$i 添加的内容' file  #这是在最后一行行前添加字符串   
 
sed '$a添加的内容' file  #这是在最后一行行后添加字符串   
 
sed '$a添加的内容' file  #这是在最后一行行后添加字符串   
 +
 +
 +
 +
  sed  's!^!truncate table &!g' tablist >taball
 +
8916  cat taball
 +
8917  sed 's/$/&;/g' taball
 +
8918  sed 's/$/&;/g' taball >good
 
</pre>
 
</pre>
  
第120行: 第152行:
  
 
[https://blog.csdn.net/stpeace/article/details/46730991 sed基本用法简介]
 
[https://blog.csdn.net/stpeace/article/details/46730991 sed基本用法简介]
 +
 +
[https://blog.csdn.net/chenwei19870313/article/details/52469870  sed处理替换字符中的特殊字符]
  
 
[https://blog.csdn.net/whatday/article/details/105903716  linux shell sed命令 在文本每行 行尾 或 行首 添加字符]
 
[https://blog.csdn.net/whatday/article/details/105903716  linux shell sed命令 在文本每行 行尾 或 行首 添加字符]
第133行: 第167行:
  
 
[https://blog.csdn.net/qq_48168706/article/details/123271906  三剑客之sed特点]
 
[https://blog.csdn.net/qq_48168706/article/details/123271906  三剑客之sed特点]
 +
 +
[https://blog.csdn.net/jiecxy/article/details/77539766  sed替换成换行符/回车符]
  
 
[[category:ops]] [[category:shell]]
 
[[category:ops]] [[category:shell]]

2022年12月8日 (四) 06:04的最新版本


站内资源

Shell常用技能

常用

  sed  -i "s/netstat/\/usr\/bin\/netstat/g" check.sh  #还有一种不能转义的 是# ?

#在每行最后添加 , 
 sed  -i  "s/$/&,/g" youfile 

   删除前N个空格用  vim ctr+v  然后大学X

   删除前所有空格用   sed s/[[:space:]]//g  filename          删除空格



    sed /^$/d         filename        删除空行 

    删除前N个字符 
    sed -i 's/^..//' file    (N个‘.’表示N个字符)



在每行的头添加字符,比如"sudo -u apache ",(注意有个空格在最后的)命令如下:
sed "s/^/sudo -u apache &/g" file

去掉file中的前 (n个.) n个字符
sed  -i  's/^...//' file




Sed删除或者替换有关键字的一行

! and sed支持使用自定义分隔符

[root@localhost ~]# cat  /var/spool/cron/root 
*/2  *  *  *  *    /root/check.sh

[root@localhost ~]# sed -i 's!*/2!#*!' /var/spool/cron/root

[root@localhost ~]# cat  /var/spool/cron/root 
#*  *  *  *  *    /root/check.sh


写脚本需要替换json串中的路径 脚本如下:

path=/root/baixw/test
​
sed -i "s/path=.*/path=$path/g" ./sed_path.txt

#正确使用办法 
path=/root/baixw/test
​sed -i "s?path=.*?path=$path?g" ./sed_path.txt

sed替换路径字符串遇到的问题

sed输出文件的指定行 输出指定的段落

sed -n '1,2p' infile  #print line 1 to 2

sed ‘/pattern/!p’ infile //匹配pattern的行不输出

sed -n ‘2,$p’ file //print line 2 to end of line 

每行的头添or 行尾加字符


在每行的头添加字符,比如"HEAD",命令如下:

sed "s/^/HEAD&/g" test.file  

eg  sed "s/^/huagui\//g"  file   # 在每行首加 huagui/


在每行的行尾添加字符,比如“TAIL”,命令如下:

sed "s/$/&TAIL/g" test.file

sed 指定行后添加行

在29行之后添加
sed -i '29a user=mysql' /etc/my.cnf
sed -i '29a character-set-server=utf8' /etc/my.cnf
sed -i '29ainnodb_file_per_table=1' /etc/my.cnf

sed删除指定行的注释

#ln36
sed -i -e '36 s/^#//' file 

#ln1 to ln6

sed -i -e '1,6 s/^#//' file


sed 替换并插入

sed -i 's!old!new!' filename

Sed删除或者替换有关键字的一行

追加 sed在文本第一行和最后一行添加字符串

shell在文本第一行和最后一行添加字符串
sed '1i 添加的内容' file  #这是在第一行前添加字符串  
sed '$i 添加的内容' file  #这是在最后一行行前添加字符串  
sed '$a添加的内容' file  #这是在最后一行行后添加字符串  



  sed  's!^!truncate table &!g' tablist >taball
 8916  cat taball
 8917  sed 's/$/&;/g' taball
 8918  sed 's/$/&;/g' taball >good

sed向文件末尾添加内容

追加不太像


所有192.168.0.1 开头的行都被替换成它自己加localhost  192.168.0.1localhost                                                                                                   
 sed  's/^192.168.0.1/&localhost/' filename                                                                                                                                  
                                                                                                                                                                             
                                                                                                                                                                             
 evan@myxps:~/tmp$ cat e.txt                                                                                                                                                 
 i1111                                                                                                                                                                       
 2222                                                                                                                                                                        
                                                                                                                                                                             
                                                                                                                                                                             
                                                                                                                                                                             
                                                                                                                                                                             
                                                                                                                                                                             
 3333                                                                                                                                                                        
 evan@myxps:~/tmp$ sed -i  -n 's/^i1/&love/p' e.txt                                                                                                                          
 evan@myxps:~/tmp$ cat e.txt                                                                                                                                                 
 i1love111                                                                                                                                                                   
             

sed 使用shell变量

如果要使用shell变量,就需要使用双引号

see also

Sed删除或者替换有关键字的一行

Sed技巧按日期提取日志

Reference

sed基本用法简介

sed处理替换字符中的特殊字符

linux shell sed命令 在文本每行 行尾 或 行首 添加字符

Sed and awk 笔记之 sed 篇:模式空间与地址匹配

sed awk插入,替换指定行的特定字符串,删除指定行首的

Linux使用sed删除和替换文件中某一行的方法


linux系统中sed命令提取指定的行

三剑客之sed特点

sed替换成换行符/回车符