广告位联系
返回顶部
分享到

shell脚本实现字符串的动态替换方法

linux shell 来源:互联网 作者:佚名 发布时间:2022-10-26 22:15:45 人浏览
摘要

我们有时候需要完成字符串的多组替换,比如需要完成以下替换 将小草替换为真是让人印象深刻 将小狗的替换为可爱的 将你听清楚了吗替换为我说明白了吗 将我不会替换为我可以学

我们有时候需要完成字符串的多组替换,比如需要完成以下替换

  • 将“小草”替换为“真是让人印象深刻”
  • 将“小狗的”替换为“可爱的”
  • 将“你听清楚了吗”替换为“我说明白了吗”
  • 将“我不会”替换为“我可以学”
  • 将“打麻将”替换为“修长城”
  • 将“打游戏”替换为“计算机实践练习”

在shell脚本中全部替换的方式为${var//old/new}。我们可以通过如下命令替换:

1

2

3

4

5

6

var=${var//小草/真是让人印象深刻}

var=${var//小狗/可爱的}

var=${var//你听清楚了吗/我说明白了吗}

var=${var//我不会/我可以学}

var=${var//打麻将/修长城}

var=${var//打游戏/计算机实践练习}

但是如果替换规则有变化,比如新增一条替换规则:将“单身狗”替换为“萌新”,那就要手动修改代码。如果只是一两个脚本还好,但是如果脚本较多,还是不好维护。

此时,就需要专门写一个工具实现这种文本替换,而且最好是将替换规则和代码分离,可以让非编程人员来维护替换规则。

下文是我的实现。

代码

shell脚本:ReplaceStr.sh:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

#!/bin/bash

# ------------------------------------------

# Filename    : ReplaceStr.sh

# Version     : 1.1

# Date        : 2022-10-23 16:04:25

# Author      : 农民工老王@CSDN

# Email       : scwja@qq.com

# Website     : https://blog.csdn.net/monarch91

# Description : 用于追踪文件变化的脚本

# ------------------------------------------

 

needReplaceStr="$1"

listPath="$2"

if [ ! -f "${listPath}" ]; then

  echo "错误:脚本文件缺失!"

else

  IfsTemp=$IFS

  IFS=$';'

  fileList=$(cat "${listPath}"|xargs)

  fileArray=(${fileList})

  for item in "${fileArray[@]}"

  do

    itemLengthStr=$(echo ${item}|wc -L)

    itemLength=$((${itemLengthStr}))

    if [ ${itemLength} -gt 3  ] && [ "${item:0:1}" != "#" ]; then

      v=(${item//:/;})

      srcStr="${v[0]:1}"

      tarStr="${v[1]}"

      needReplaceStr=${needReplaceStr//${srcStr}/${tarStr}}

      needReplaceStr=${needReplaceStr//${srcStr^^}/${tarStr^^}}

      needReplaceStr=${needReplaceStr//${srcStr,,}/${tarStr,,}}

    fi

  done

  IFS=$IfsTemp

fi

 

echo "$needReplaceStr"

替换规则 map.txt:
第一行为标题不可删,从第二行开始为替换规则,每条规则,以英文冒号连接新旧字符串,以英文分号结尾。

#替换规则;
小草:真是让人印象深刻;
小狗的:可爱的;
你听清楚了吗:我说明白了吗;
我不会:我可以学;
打麻将:修长城;
打游戏:计算机实践练习;
单身狗:萌新

使用示例

使用方法为:./ReplaceStr.sh ${带操作字符串} ${替换规则},例如:

在这里插入图片描述

用shell实现某行字符串的替换

1.示例:

将/SE/test.conf文件中含有#__TEST__的行替换为http://127.0.0.1:1111;#__TEST__

2.实现:test_conf_contrl.sh

1

2

3

4

5

6

#/bin/sh

http=$1

test_conf=/SE/test.conf

Line=`cat test_conf | grep -wn "#__TEST__" | awk -F: '{print $1}'`

sed -i ''$Line'd' $test_conf

sed -i ''$Line'i '$1';#__TEST__' $test_conf


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/monarch91/article/details/127475568
相关文章
  • Linux实现彻底清理空文件夹的方法

    Linux实现彻底清理空文件夹的方法
    最近工作中遇到一个需求删除指定路径下的所有空文件夹。这里的空文件夹的认定标准是:如果某个文件夹的子文件夹全是空文件夹,也认
  • shell脚本实现字符串的动态替换方法

    shell脚本实现字符串的动态替换方法
    我们有时候需要完成字符串的多组替换,比如需要完成以下替换 将小草替换为真是让人印象深刻 将小狗的替换为可爱的 将你听清楚了吗替
  • shell循环命令的介绍
    1. for 命令 1.1 for 命令的使用 bash shell 提供了for命令,可以创建一个遍历一系列值的循环。每次一轮循环都使用其中一个值来执行已定义好的
  • shell脚本设置日志格式的方法
    shell脚本设置日志格式 1.封装函数 #!/bin/bash function log() { echo $@ } //测试: log this is a test... log today is `date +%Y-%m-%d` 2.设置时间日志 #!/bin/bash
  • linux下shell脚本备份文件的方法实现
    1、shell自动备份 主要功能: 1)将pathSrc目录中的文件拷贝到pathDst目录中去。 具体步骤:先查询源目录和目标目录中的文件,分别存在file
  • shell脚本实现定时删除文件或文件夹
    一、删除XX天(默认10天)之前某个目录下面带.log的日志文件,并且输出文件显示删除的文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
  • shell脚本批量将文件复制到指定的文件夹下

    shell脚本批量将文件复制到指定的文件夹下
    由于线上文件比较多,选择特定的文件拿下线下进行语料标注,如果指定的文件数量太多,一个个复制就很麻烦。所以写一个shell脚本进行批
  • 在shell脚本中激活conda虚拟环境的几种方法

    在shell脚本中激活conda虚拟环境的几种方法
    在shell脚本中激活conda虚拟环境 常用命令行激活conda的env的命令有2种: 1 2 conda activate ENV_NAME source /home/zhaohuiyao/minconda3/bin/activate ENV_NAME 但是
  • Shell内置命令之exit的语法与实例
    介绍: exit 用于退出当前shell环境进程结束运行,并且可以返回一个状态码.一般使用$?可以获取状态码. 语法: 正确退出语法 exit #默认返回状态
  • shell中的curl网络请求的实现介绍
    shell中的curl网络请求的实现 curl 是利用URL语法在命令行下工作的文件传输工具,1997年首次发行,支持文件上传和下载,结合shell脚本体验更
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计