根据文件名添加特定的标题



我有一些文本文件,其中包含以下名称:

testfile_1_from_Country_A_final.txt
testfile_2_from_Country_A_final.txt
testfile_1_from_Country_B_final.txt
testfile_2_from_Country_B_final.txt
testfile_1_from_Country_C_final.txt
testfile_2_from_Country_C_final.txt

,我必须添加一个特定的标头,该标头由三个数字组成,具体取决于测试文件的数量(例如testfile_1)和国家的名称(例如国家a)和一个" 1"one_answers" 1"测试文件或国家名称。

例如,如果来自test File_1_from_country_a_final.txt的数据是:

blablablabalabalbalablabbla
blabalalbblalbablablalbabla
blalalbablalblabblalbalbalb
blabalbalblbalbalbalbalbalb
abllablbalbalbalbalbalbalba

新文件应该看起来像这样:

30 7 1
blablablabalabalbalablabbla
blabalalbblalbablablalbabla
blalalbablalblabblalbalbalb
blabalbalblbalbalbalbalbalb
abllablbalbalbalbalbalbalba

30是因为它是国家A和7个国家,因为它是test_file编号1,而最终1是每个文件必须的。

额外信息

实际上有很多国家的文件,因此也许将单独的文本文件带有每个test_file号码的数字以及每个国家/地区需要添加到标题中的数字是一个好主意。<<<<<<<<<<

预先感谢。

使用它来拆分文件名,转换元素并将标头行插入文件中:

for fileName in testfile*.txt
do
  if [[ "$fileName" =~ testfile_([0-9]+)_from_Country_([A-Za-z_]+)_final.txt ]]
  then
    number=${BASH_REMATCH[1]}
    country=${BASH_REMATCH[2]}
    # now convert the number and the country
    convertedNumber=$(grep "^$number " numberConversionFile.txt | cut -d' ' -f2)
    convertedCountry=$(grep "^$country " countryConversionFile.txt | cut -d' ' -f2)
    sed -i "1i$convertedCountry $convertedNumber 1" "$fileName"
  fi
done

这里涉及几个步骤。首先,您需要迭代文件。可以使用循环:

完成
for filename in testfile_*.txt
do
   ...
done

然后,您需要从每个文件名中提取测试文件编号和国家/地区。这可以通过在_上分配文件名来完成,如下所示:

IFS=_ read -a arr <<< "$filename"
test_file_num="${arr[1]}"
country="${arr[4]}"

接下来,您需要将测试文件编号和国家/地区转换为编号。您尚未提供有关如何变为数字30的信息。

最后,您需要将标题写入每个文件。可以使用这样的临时文件来完成:

echo "30 7 1" > tmpfile
cat "$filename" >> tmpfile
mv tmpfile "$filename"

相关内容

  • 没有找到相关文章

最新更新