我有一系列文件夹,其中包含三个文件,我想将它们连接起来作为脚本的一部分。
这三个文件名分别为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
好的,我现在明白问题所在了,您只需引用变量或字符串(1
等2
)。否则$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
但如果文件名包含空格,这将会中断。