`

linux sed 常用用法举例01

阅读更多

 

 

判断是否以. 开头

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

 

 

 

 

判断是否以/ 开头

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

 

 

 

 判断是否以\ 开头

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

 

 

 

 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

 

 

 

 

  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,字符 38unterminated `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,字符 38unterminated `s' command

解决方法:

$进行转义:

#!/bin/sh

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

 

 

 

 

  去掉两边的引号

方式一:

 

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

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

方式二:

myname2= ${myname#\"}

echo ${myname2%\"}

 

 

 

 双重条件

多重条件     多个条件

范例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"
}

 

实例:

inte-workbench.chanjet.com替换成workbench.chanjet.com

echo "修改工作台的地址"
sed -i 's/inte-workbench\.chanjet\.com/workbench\.chanjet\.com/g' ./page/order/list.js

 把https替换成为http:

sed -i 's/"https:\/\/" + APP.Constant.STORE_ROOT/"http:\/\/" + APP.Constant.STORE_ROOT/g' ./page/order/detail.js

 

sed -i 's/callback = URLEncoder.encode("https:\/\//callback = URLEncoder.encode("http:\/\//' ./com/chanjet/gov/controller/PayOrderController.java
sed -i 's/= URLEncoder.encode("https:\/\//= URLEncoder.encode("http:\/\//' ./com/chanjet/gov/service/AuthInterceptor.java

sed -i 's/String payUrl = "https:\/\/"/String payUrl = "http:\/\/"/' ./com/chanjet/gov/controller/PayOrderController.java
sed -i 's/window.location.href = "https:\/\/"/window.location.href = "http:\/\/"/' ../webapp/release/js/page/order/list.js
echo  "测试环境把https 改为http"

 

 将空格替换为Tab

 

# cat a.txt  | tr '[:space:]' '\t'

 

分享到:
评论

相关推荐

    Linux_sed_批量替换字符串方法

    很详细的关于linux sed的用法,每种用法都有详细的举例。

    LINUX与UNIX SHELL编程指南(很全)

    10.4 基本sed编程举例 91 10.4.1 使用p(rint)显示行 91 10.4.2 打印范围 91 10.4.3 打印模式 92 10.4.4 使用模式和行号进行查询 92 10.4.5 匹配元字符 92 10.4.6 显示整个文件 92 10.4.7 任意字符 92 10.4.8 首行 ...

    Linux shell编程指南

    10.4 基本sed编程举例 91 10.4.1 使用p(rint)显示行 91 10.4.2 打印范围 91 10.4.3 打印模式 92 10.4.4 使用模式和行号进行查询 92 10.4.5 匹配元字符 92 10.4.6 显示整个文件 92 10.4.7 任意字符 92 10.4.8 首行 ...

    Linux与unix shell编程指南

    10.4 基本sed编程举例 91 10.4.1 使用p(rint)显示行 91 10.4.2 打印范围 91 10.4.3 打印模式 92 10.4.4 使用模式和行号进行查询 92 10.4.5 匹配元字符 92 10.4.6 显示整个文件 92 10.4.7 任意字符 92 10.4.8 首行 ...

    绝版经典《Linux与UNIX Shell编程指南》

    10.4 基本sed编程举例 91 10.4.1 使用p(rint)显示行 91 10.4.2 打印范围 91 10.4.3 打印模式 92 10.4.4 使用模式和行号进行查询 92 10.4.5 匹配元字符 92 10.4.6 显示整个文件 92 10.4.7 任意字符 92 10.4.8 首行 ...

    linux shell 编程教程

    linux shell编程 教程大全 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对模式 5 1.4.4 ...

    LINUX与UNIX SHELL编程指南 高清PDF

    10.4 基本sed编程举例 91 10.4.1 使用p(rint)显示行 91 10.4.2 打印范围 91 10.4.3 打印模式 92 10.4.4 使用模式和行号进行查询 92 10.4.5 匹配元字符 92 10.4.6 显示整个文件 92 10.4.7 任意字符 92 10.4.8 首行 ...

    linux与unix shell编程指南.rar

    linux/unix shell编程指南,全面介绍了Linu/unix shell编程的常用知识和技巧,是不可多得的编程宝典。 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限...

    LINUX与UNIX_Shell编程指南

    详细的介绍了Linux下的编程指南 目 录 译者序 前言 第一部分 shell 第1章 文件安全与权限 1 1.1 文件 1 1.2 文件类型 2 1.3 权限 2 1.4 改变权限位 4 1.4.1 符号模式 4 1.4.2 chmod命令举例 5 1.4.3 绝对...

    redhat linux教材20课程学习文档

    第一部分 Linux简介和原理介绍 第一章 概述 1.1 Linux 的历史及背景 1.1.1 什么是 Linux? 1.1.2 Linux 该怎么念? 1.1.3 Linux 的历史 1.1.4 Linux的优点 1.2 Linux与开源软件 1.3 Linux 与 Windows 的比较 1.3.1 ...

    LINUX与UNIX SHELL编程指南

    10.4 基本sed编程举例 91 10.4.1 使用p(rint)显示行 91 10.4.2 打印范围 91 10.4.3 打印模式 92 10.4.4 使用模式和行号进行查询 92 10.4.5 匹配元字符 92 10.4.6 显示整个文件 92 10.4.7 任意字符 92 10.4.8 首行 ...

    LINUX与UNIX_Shell编程指南(上)

    10.4 基本sed编程举例 91 10.4.1 使用p(rint)显示行 91 10.4.2 打印范围 91 10.4.3 打印模式 92 10.4.4 使用模式和行号进行查询 92 10.4.5 匹配元字符 92 10.4.6 显示整个文件 92 10.4.7 任意字符 92 10.4.8 首行 ...

    linux与unix shell编程指南

    10.4 基本sed编程举例 91 10.4.1 使用p(rint)显示行 91 10.4.2 打印范围 91 10.4.3 打印模式 92 10.4.4 使用模式和行号进行查询 92 10.4.5 匹配元字符 92 10.4.6 显示整个文件 92 10.4.7 任意字符 92 10.4.8 首行 ...

    Linux与unix shell编程指南(1-16)

    10.4 基本sed编程举例 91 10.4.1 使用p(rint)显示行 91 10.4.2 打印范围 91 10.4.3 打印模式 92 10.4.4 使用模式和行号进行查询 92 10.4.5 匹配元字符 92 10.4.6 显示整个文件 92 10.4.7 任意字符 92 10.4.8 首行 ...

    linux与unix shell编程指南part2

    10.4 基本sed编程举例 91 10.4.1 使用p(rint)显示行 91 10.4.2 打印范围 91 10.4.3 打印模式 92 10.4.4 使用模式和行号进行查询 92 10.4.5 匹配元字符 92 10.4.6 显示整个文件 92 10.4.7 任意字符 92 10.4.8 首行 ...

Global site tag (gtag.js) - Google Analytics