[shell/应用]shell脚本使用sed进行字符截取等简单应用

使用sed进行字符截取等简单应用

针对文件字符串替换

#!/bin/bash

function re_bb() {
        echo $1
        sed -i '1,11d' $1   ##删除指定行
        sed -i '1i\# ###################################' $1
        sed -i '2i\\' $1  ##增加空白行
        sed -i 's/LICENSE = "CLOSED"/LICENSE = "GPL-2.0-or-later"/g' $1 ##替换指定内容
}

#筛选符合条件的目标进行操作
num=`grep -c "CLOSED" $1` ##当$1中存在"CLOSED"时 num != 0
if [[ $num -ne '0' ]];then
        re_bb $1
fi

#re_bb $1

针对文件字符串替换
该函数主要针对从文件中取得字符格式的路径,假如路径中存在变量解应用还需要进行字符串替换(较为麻烦)。

#/bin/bash

function move_lic() {
        USE_DIR=`sed -n '2p' $1 | cut -b 15-`  ##取传入参数的第二行的从第15个字符后的其余字符
        USE_DIR=`echo $USE_DIR | sed 's/\"//g'` ##去掉冒号
        USE_DIR=`echo $USE_DIR | sed 's?\${XXX_A}?A?g'`
        USE_DIR=`echo $USE_DIR | sed 's?\${XXX_B}?B?g'`
        echo $USE_DIR
        cp file1.txt $USE_DIR -fp  ##赋值txt文件到$USE_DIR指定的路径
}

move_lic $1

获取文件中某关键字的首行行数

num=`cat $USE_DIR_DIR | grep -n xxx | awk -F ":" '{print $1}'`
echo $num
num=`expr $num + 1`  ##shell加法

获取脚本执行路径

script_path=$(realpath `dirname ${BASH_SOURCE[0]}`)
DIR=$(realpath ${script_path}/..)

针对多个目标使用脚本/命令

find -name "*.txt" | xargs -n 1 ./add_lic.sh 
#xargs -n 1 指每次传一个参数给add_lic.sh,这里必须要加./执行脚本 不能直接写脚本名字

再特定关键词下新增行

sed -i '/aaaaa/a\bbbbbbbbbbbb' $TAR_DIR

note
$1 在脚本函数中代表传入函数的变量,在脚本内部定义;而在外部使用这个脚本时,外部的$1指的是传参给该脚本的参数,二者并不相同。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值