访问文件的递增扩展名(作为整数变量)

访问文件的递增扩展名(作为整数变量)

我正在尝试编写一个简单的脚本,使用sed基本的查找和替换功能。我想要原始文件未受影响的并产生名为“file.n”的新文件(n 正在递增)。

我的主要问题是对新文件进行编号。这是我的基本代码,具有 n=1 和 n=2 的静态功能:

#!/bin/bash
n=1

if [[ -f file.$n ]]
then sed -e 's/'$2'/'$3'/g' $1 > file.$((n+1))

else sed -e 's/'$2'/'$3'/g' $1 > file.1
fi

终端中的输入如下所示:./脚本text_sample.txt word_1 word_2

此代码对于第一次和第二次使用都可以正常工作(如果 file.1 不存在,它将在此处保存结果;否则它将保存在 file.(n+1) 中,即 file.2)。

但是我如何为 file.3、file.4 等制作它呢?每次启动这个脚本后,一开始它的n=1,我真的不知道如何处理它。

我已经尝试过一些导出变量,使用特定变量作为命令(使这个整数更像全局的);我想可能需要一些循环......

任何帮助,将不胜感激。

答案1

尝试这个:

#!/bin/bash
n=1

while [[ -f file.$n ]]; do
    n=$((n+1)
done

sed -e 's/'$2'/'$3'/g' $1 > "file.${n}"

答案2

sed 有备份功能试试sed -i [SUFFIX]

相关内容