读取输入文件时出错:密钥已过期

时间:2019-06-19 16:52:16

标签: linux bash

我目前正在制作bash脚本。该脚本的目的并不重要。但是,我有一段代码正在生成错误。错误如下:

./script.bs: line 175: read: read error: 0: Key has expired
./script.bs: error reading input file: Key has expired

我在下面有175-189行的代码。

这段特定的代码执行以下操作: -读取txt文件,其中包含目标文件列表。 -对于每个目标文件,读取每一行。并且如果该行包含在$ NumbersFile中,它将什么都不做。如果该行未包含在$ NumbersFile中,它将将该行添加到NumbersFile中。

此通用代码段正常工作,并向$ NumbersFile添加了65810行内容。但是,它却收到了我上面提到的错误。

我想补充一点,第175行上的while循环(发生错误的地方)应该从给定文件中读取约70,000行。

如何解决此错误,以便脚本可以完成运行而没有密钥过期错误?

NumbersFile="numbers.txt";
while read line; do

  while read gramline; do 
    has="0"; 
    if grep -Fq -- "$gramline" "$NumbersFile"; then
      has="1"; 
    fi 
    if [ "$has" -eq "0" ]; then 
      echo "$gramline" >> $NumbersFile; 
    fi 
  done < "$line";  
done < "targetsfile.txt";

1 个答案:

答案 0 :(得分:1)

如果我的评论正确无误,也许这可能会更快:

complaints/detail/id

或已澄清:

{ cat targetsfile.txt; xargs cat < targetsfile.txt; } | sort -u > numbers.txt

注意:

  • 花括号只是将cat和xargs命令分组,以便可以将组合的输出传递到xargs cat < targetsfile.txt | sort -u > numbers.txt 中。记录在手册中,3.2.4.3 Grouping Commands
  • 第一个sort输出“ targetsfile.txt”文件的内容
  • cat构造将对目标文件中列出的每个文件执行xargs cat < targetsfile.txt命令。这是一种非常简洁高效的执行方式

    cat