#!/bin/bash mkdir Drdb argus_rdb="./argus_hier/EP.rdb" calibre_rdb="./calibre_hier/EP.rdb" touch Argus_Match touch Calibre_Match cat $argus_rdb | while read lineA; do if [[ $lineA =~ ^[-0-9] ]]; then cat $calibre_rdb | while read lineB; do if [[ $lineB =~ ^[-0-9] ]] && [[ $lineB == $lineA ]]; then awk -v line="$lineA" 'BEGIN {print line} {if (NR>=FNR-4 && NR<FNR) print $0}' "$argus_rdb" "$calibre_rdb" >> Argus_Match awk -v line="$lineB" 'BEGIN {print line} {if (NR>=FNR-4 && NR<FNR) print $0}' "$argus_rdb" "$calibre_rdb" >> Calibre_Match fi done < "$calibre_rdb" fi done < "$argus_rdb" mv Argus_Match Calibre_Match Drdb哪里错了
时间: 2024-03-19 11:43:02 浏览: 80
解决-BASH: /HOME/JAVA/JDK1.8.0_221/BIN/JAVA: 权限不够问题
这个脚本的语法是正确的,但是它可能会出现问题,具体取决于以下几个方面:
1. 变量$argus_rdb和$calibre_rdb是否指向存在的文件,并且是否有读取权限。
2. 是否存在Drdb目录,是否有写入权限。
3. 如果argus_rdb和calibre_rdb文件中的数据行数非常大,比如上千万行,那么这个脚本的执行时间可能会非常长,影响执行效率。
此脚本的主要功能是比较argus_rdb和calibre_rdb两个文件中的数据,并将比较结果输出到Argus_Match和Calibre_Match两个文件中,然后将这两个文件移动到Drdb目录中。该脚本会先创建Drdb目录,然后使用while循环分别读取argus_rdb和calibre_rdb文件的每一行,并对每一行进行判断,如果该行是以数字或负号开头的,则在另一个文件中查找是否有相同的行,如果存在相同的行,则使用awk命令输出该行及其前面四行的内容,并将结果追加到相应的文件中。最后,将Argus_Match和Calibre_Match两个文件移动到Drdb目录中。
总体来说,这个脚本是一个比较完整的数据处理脚本,需要保证每个步骤都能正常执行,并且需要处理的数据量不能太大。
阅读全文