防止对一个文件进行多次追加



使用bash脚本检查一个文件是否多次附加到另一个文件的最佳方法是什么?我需要在不安装额外工具的情况下完成此操作。我会定期更新一个文件,在其中添加另一个,并希望确保以前没有发生过这种操作。

我尝试过各种diff和wc解决方案,但找不到解决方案。

根据mklement0的建议,一种解决方案可能是将目标文件的最后一行与源文件diff,与源文件中的行数一样多。这是一个草图:

#!/bin/bash
# USAGE: append_uniq.sh target source
# append source to target only if last part of target != source
target_file=$1
source_file=$2
source_num_lines=$(wc -l < "$source_file")
diff_target_lines=$(tail -n $source_num_lines "$target_file")
if ! diff "$source_file" <(echo "$diff_target_lines") > /dev/null; then
echo "Appending $source_file to $target_file"
cat "$source_file" >> "$target_file"
else
echo "Already appended, skipping"
fi

奖金:一行

将文件a追加到文件lines,除非a最后一次追加到lines。两个文件都必须存在:

! diff -q a <(tail -n $(wc -l < a) lines) && cat a >> lines

相关内容

  • 没有找到相关文章

最新更新