bash脚本使用临时文件编辑文本

99 阅读1分钟

前言

晚上好🦉

工作中有一个需求:需要使用bash脚本将文本中的配置信息进行修改。

发现使用临时文件的办法,可以很大程度上简化代码的复杂度。

下面就简单演示一下。

演示

需求:我有一个文件:testData.txt:

name:jiang
age:12

name:su
age:12

这是两个人的信息,我需要在每一个人的信息后都加上hobby:rap的信息。

当然,这个需求比较简单,本次需求仅仅是为了温习使用临时文件时候的一些操作,这样在一些更复杂的业务场景中就可以用到了。

下面是test1.sh中的实现代码:

#!/bin/bash

# 指定要读取和修改的文件
FILE="testData.txt"

# 创建临时文件
TMP_FILE=$(mktemp)

# 读取文件内容并输入到临时文件
while IFS= read -r line
do
  # 在每一个name字段下面新增新的字段
  if [[ $line =~ .*name.* ]]; then
    echo "$line" >> "$TMP_FILE"
    echo "hobby:rap" >> "$TMP_FILE"
  else
    echo "$line" >> "$TMP_FILE"
  fi
done < "$FILE"

# 使用临时文件代替源文件
cp "$TMP_FILE" "$FILE"

# 删除临时文件
rm "$TMP_FILE"

echo "[DEBUG_JJQ] 程序运行完毕"

运行脚本:

bash test1.sh

执行后的testData.txt如下所示:

name:jiang
hobby:rap
age:12

name:su
hobby:rap
age:12

最后

需要注意的是,临时文件的默认地址在/tmp/

下次见咯😊