我想创建一个脚本,将文本(包含多行)作为标题添加到具有txt扩展名的多个文件中。但是要插入的文本需要放入将要插入的文件的文件名。
abcdgd FILENAME dhsgabc shcnwk shfgamvk cjshjg nwdcbi skfh nwvjcnd
我有很多文件,名称为001.txt,002.txt,003.txt等等...... 所以NAMEFILE只需要001,002,003等等。(没有.txt扩展名)
感谢
答案 0 :(得分:0)
此脚本将创建一组名为001.txt.new,002.txt.new,...的新文件,其中包含您所请求的更改:
# Create a re-usable header file:
cat > header << @@
abcdgd FILENAME dhsgabc shcnwk shfgamvk cjshjg nwdcbi skfh nwvjcnd
@@
# Loop over all files:
for i in [0-9][0-9][0-9].txt; do
# Get file name without suffix:
NAME=$(echo $i|sed -r 's/(.*)\.txt/\1/'
# Create a new file containing the modified header line:
cat header | sed 's/FILENAME/'"$NAME"'/' > ${i}.out
# Append contents of the original file to the new file:
cat $i >> ${i}.out
done
如果要完全替换原始文件,可以将此行添加到循环结尾:
mv ${i}.out $i
但您可能希望在更换之前以某种方式备份原始文件。