使用 Bash 脚本将三个文件合并为一个

使用 Bash 脚本将三个文件合并为一个

我有一系列文件夹,其中包含三个文件,我想将它们连接起来作为脚本的一部分。

这三个文件名分别为file.html1 file.html2 file.html3。我想将它们连接成file.html

我正在使用这个循环:

find . -name "file.html" -print0 | while IFS= read -r -d '' n; do
  perl -i.bak -0pe  's/<\/h2>\n(.*?\n)*/<\/h2>\n/' "$n"  #extract 1st part of file.html and create .bak
  perl -i -0pe  's/(.*\n)*.*?<\/h2>\n//' "$n.bak"  #extract 2nd part of file.html
  rename 's/\.html/\.html1/' $n
  rename 's/\.bak/3/' $n.bak
  cat $n1 $n2 $n3 >> $n
done

该脚本将原始的file.html拆分为file.html1和file.html3。file.html2是在脚本中较早生成的。

问题出在 cat 命令上。在这种情况下,我该如何将它们连接起来,然后删除这三个片段?语言并不重要。

答案1

好的,我现在明白问题所在了,您只需引用变量或字符串(12)。否则$n1将被视为变量名:

find . -name "file.html" -print0 | while IFS= read -r -d '' n; do
  perl -i.bak -0pe  's/<\/h2>\n(.*?\n)*/<\/h2>\n/' "$n"  #extract 1st part of file.html and create .bak
  perl -i -0pe  's/(.*\n)*.*?<\/h2>\n//' "$n.bak"  #extract 2nd part of file.html
  rename 's/\.html/\.html1/' $n
  rename 's/\.bak/3/' $n.bak
  cat "$n"1 "$n"2 "$n"3 >> $n
done

您也可以使用,cat $n"1" $n"2" $n"3" >> $n但如果文件名包含空格,这将会中断。

相关内容