shell 批量修改多个文件中的内容

文章目录

    • 前言
    • 场景
    • ==备注==
      • 最新脚本
    • 操作如下
      • 思路:
      • 第一个版本:
      • 第二版本:
    • 参考文献
    • 小结

前言

现在会议很多都是双盲评,然而又需要上传材料/实验结果,这时候需要把材料中和自己名字相关的去掉。
故涉及到批量修改多个文件中的内容,在此记录之。

场景

我在Ubuntu下存在我的材料,都存在叫做results的文件夹里面,这里面主要是有很多日志,这些日志里包含系统路径,如/home/dale/xxx,然而这些如果被评委看到名字的话,可能不太好。

所以我现在希望把这个results文件夹下的dale全部换成user。

备注

创建时间:2019年08月27日 23:27:39
修改时间:2019年9月3日15:17:09

这里再次做了研究,发现有个更好的版本,记录如下:

最新脚本

# 先找到所有相关文件
for file in `grep -rn "yang" .`
do
        # 如果是我们要找到的文件,即repair_algorithms/文件夹内的文件,那就操作。否则不做任何处理(这个就很nice)
    if [[ "$file" == ./repair_algorithms/* ]];then
        # cut 出文件的路径
        file_name=`echo $file | cut -d ':' -f 1`
        # sed 就是把所有file_name 文件中的yang全部替换为impact,至此达到目标
        sed -i 's/yang/impact/g' ${file_name}
    fi
done


操作如下

思路:

1)用grep找到所有包含dale的文件(的相对路径);
2)用sed对文件的指定内容进行替换(将dale替换为user)。

代码如下:

第一个版本:

# grep所有有dale的文件
for file in `grep -rn "dale" .`
do
	# 然而grep出来的,除了路径,还会显示匹配到的内容,如/home/dale,这时候就要把这种非路径的情况给排除掉,用 == 即可
    if [[ "$file" == /home/dale* ]];then
#        echo $file
        continue
    fi
    # cut 出绝对路径
    file_name=`echo $file | cut -d ':' -f 1`
    # sed 就是把所有file_name 文件中的dale 全部替换为user,至此达到目标
    sed -i 's/dale/user/g' ${file_name}
done

第二版本:

# 同样,先找dale,但是这次不是在 . 即当前文件夹下找,而是在 results/ 文件夹下找
for file in `grep -rn "dale" results/`
do
		# 和前面思路其实差不多,只不过反其道行之,即:如果grep到的是results/开头的,那么说明是我们要找到的相对路径
        if [[  "$file" == results/* ]];then
                echo $file
                # 同样cut出相对路径
                file_name=`echo $file | cut -d ':' -f 1`
                # 同样进行替换,不过这次我选择将dale替换为空(等价于删除)
                sed -i 's/dale//g' ${file_name}
        fi
done

参考文献

  • Shell 文件内容替换 sed用法 https://blog.csdn.net/boonya/article/details/83870146
    shell 批量修改多个文件中的内容_第1张图片这个还是很有用的。

  • sed实现直接修改文件内容 https://blog.csdn.net/sunxboy/article/details/83980805
    shell 批量修改多个文件中的内容_第2张图片

如果想直接修改源文件,而没有这样的过程,可以用下面的命令
sed  -i 's/properties/property/g'  build.xml
这样,就直接修改了build.xml文件
  • 利用sed实现在shell脚本中更改文件某一行的内容 https://blog.csdn.net/nanaranran/article/details/81203905

小结

2019年8月27日23:26:52

子在川上曰,逝者如斯夫!

你可能感兴趣的:(PHD,candidate,1)