Bash 处理管道产生的行多于输入

问题描述 投票:0回答:0

我正在数据库转储中查找

fdupes
的输出:

while IFS=$'\t' read -r -a a
  do for i in "${a[@]}"
    do 
      fid=$(grep -F "${i//\.\//public://}" file_managed.dump.txt|cut -d'(' -f2 |cut -d, -f1| sed 's/[^0-9]//g')
      echo -n "${fid:-$i}" $'\t'
    done
    echo
  done < dupes.log  > fids_dupes.txt

出于某种原因,我在输出中得到的行比输入多了一行:

 wc -l dupes.log fids_dupes.txt
   3968 dupes.log
  12358 fids_dupes.txt

我以为因为

echo -n
/
echo
我只会得到一个。文件的手动比较也不是一个启示。我究竟做错了什么? (除了不使用真正的编程语言来做到这一点。)

bash
© www.soinside.com 2019 - 2024. All rights reserved.