使用bash将一个带有一个变量号的文本添加到多个文件中

时间:2016-01-21 11:15:39

标签: bash

我想创建一个脚本,将文本(包含多行)作为标题添加到具有txt扩展名的多个文件中。但是要插入的文本需要放入将要插入的文件的文件名。

文本(要插入)

abcdgd FILENAME dhsgabc shcnwk shfgamvk cjshjg nwdcbi skfh nwvjcnd

skfh dvwuv

我有很多文件,名称为001.txt,002.txt,003.txt等等...... 所以NAMEFILE只需要001,002,003等等。(没有.txt扩展名)

感谢

1 个答案:

答案 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

但您可能希望在更换之前以某种方式备份原始文件。