linux sed 常用用法举例01

简介:

判断是否以. 开头

echo .abc |grep "^\." ;echo $?

 

 

 

 

判断是否以/ 开头

echo /abc |grep "^/" ;echo $?

 

 

 

 <!--[endif]-->判断是否以\ 开头

echo "\abc"  |grep "^\\\\" ;echo $?

 

 

 

 <!--[endif]-->sed 多次修改

两种方式:可以使用-e ,也可以使用分号。

范例01:

sed 's/abc/000/g;s/000/uuu/g' abc.txt

 

范例02:

[whuang@localhost test]$ echo The tiger cubs will meet on Tuesday after school | sed 's/tiger/wolf/; s/after/before/'

The wolf cubs will meet on Tuesday before school

 

 

 

 

  <!--[endif]-->sed 当$ 与#相遇

以下是错误的:

find $kingbase_own_home/.local/share/applications -type f -name "*.desktop" |xargs -i sed -i "s#^\(Icon=\)\([^ ]\+\)$#\1${install_dir}\2.png#g" {}

正确的应该是:

find $kingbase_own_home/.local/share/applications -type f -name "*.desktop" |xargs -i sed -i "s#^\(Icon=\)\([^ ]\+\)\$#\1${install_dir}\2.png#g" {}

点评:linux 会把$# 解析成为0.

 

范例01:

脚本名称:sed_#.sh

脚本内容:

#!/bin/sh

echo Icon=KDB_ISQL|sed "s#^\(Icon=\)\(KDB_ISQL\)$#\1CCC\2.png#g"

脚本运行结果:

[root@localhost sed_study]# sh sed_#.sh

sed:-e 表达式 #1,字符 38:unterminated `s' command

原因:sh把$#解析成为0 了。

以debug 方式运行:

[root@localhost sed_study]# sh sed_#.sh

+ echo Icon=KDB_ISQL

+ sed 's#^\(Icon=\)\(KDB_ISQL\)0\1CCC\2.png#g'

sed:-e 表达式 #1,字符 38:unterminated `s' command

解决方法:

对$进行转义:

#!/bin/sh

echo Icon=KDB_ISQL|sed "s#^\(Icon=\)\(KDB_ISQL\)\$#\1CCC\2.png#g"

 

 

 

 

  <!--[endif]-->去掉两边的引号

方式一:

 

myn=$(echo $myname |sed -e "s/\"\(.*\)\"/\1/g")

myn=$(echo $myname |sed -e "s/\"\([^ ]*\)\"/\1/g")

方式二:

myname2= ${myname#\"}

echo ${myname2%\"}

 

 

 

 

  <!--[endif]-->双重条件

多重条件     多个条件

范例01

sed '64,${/PATH/d}' av.txt

 

范例02:

[root@localhost ~]# echo -e "abc1\nccc1\nbbb1\nddd1"|sed '/bbb/ s/1/2/'

abc1

ccc1

bbb2

ddd1

[root@localhost ~]# echo -e "abc1\nccc1\nbbb1\nddd1"

abc1

ccc1

bbb1

ddd1

 

范例03:

abc.txt 的内容:

abcxxx

abcddd

abc222

abc444

abc555

abc666

abc777

需求:仅仅把2-3行的abc 替换成为000

[root@localhost test]# sed  '2,3{s/abc/ooo/;}' abc.txt

abcxxx

oooddd

ooo222

abc444

abc555

abc666

abc777

 

范例04:

删除指定范围内的行

abc.txt 的内容如下:

111

abc222

333

444

abc444

需求只删除1-3行中匹配abc的所有行

sed  '1,3{/abc/d;}' abc.txt

 

 

范例05:

abc.txt 文件的内容:

test aa

est bbc  aa

cccc aa

sed '/test/{ n;n; s/aa/bb/; }' abc.txt

执行结果:

test aa

est bbc  aa

cccc bb

 

 

就地写入文件:


sed_i() 
{
        scripts="$1"
        targetFile=$2
        sed -e "$scripts" "$targetFile" >"$targetFile.bak"
        rm -f "$targetFile"
        mv "$targetFile.bak" "$targetFile"
}

相关文章
|
5月前
|
Linux Perl
在Linux中,如何使用请用 cut 或者 awk,sed命令取出 linux 中 eth0 的 IP 地址?
在Linux中,如何使用请用 cut 或者 awk,sed命令取出 linux 中 eth0 的 IP 地址?
|
2月前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
159 3
|
3月前
|
Ubuntu Linux
Linux的基础用法
Linux的基础用法
31 6
|
4月前
|
机器学习/深度学习 Linux Perl
Linux文本处理三剑客之sed详解
这篇博客详细讲解了Linux中的文本处理工具sed的使用方法和常用命令。
281 9
Linux文本处理三剑客之sed详解
|
4月前
|
Linux Perl
Linux之sed命令
Linux之sed命令
|
4月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
859 2
|
4月前
|
监控 Linux
Linux系统中du命令与df命令的区别与用法
总的来说,`du` 和 `df` 在磁盘管理中互补使用,能够提供全面的磁盘空间使用信息,帮助用户和管理员有效地监控和管理系统资源。
114 3
|
4月前
|
存储 Ubuntu Linux
linux中的find 命令详细用法
本文介绍了如何将 `find` 命令与 `exec` 结合使用,通过具体示例展示了多种应用场景,如显示文件属性、重命名文件、收集文件大小、删除特定文件、执行工具、更改文件所有权和权限、收集 MD5 值等。文章还探讨了 `{} \;` 和 `{} +` 的区别,并演示了如何结合 `grep` 命令进行内容搜索。最后,介绍了如何在一个 `find` 命令中使用多个 `exec` 命令。这为 Linux 用户提供了强大的文件管理和自动化工具。
|
4月前
|
Linux Perl
6-20|linux sed命令
6-20|linux sed命令
|
5月前
|
Linux Shell Perl
在Linux中,如何使用sed命令进行文本替换?
在Linux中,如何使用sed命令进行文本替换?