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'

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值