[英]Bash: nested loop one way comparison
我有一个关于bash嵌套循环的问题。
我有一个输入文件,每行一个文件名(完整路径),我读取此文件,然后进行嵌套循环:
for i in $filelines ; do
echo $i
for j in $filelines ; do
./program $i $j
done
done
我在循环中的程序非常低。 基本上,它将文件A与文件B进行比较。
我想跳过A与A的比较(即,将一个文件与其itslef进行比较),并且想要避免排列(即,对于文件A和B,仅对B执行A,而对B不执行B)。
什么是最简单的执行此操作?
版本2:这个负责排列
#!/bin/bash
tmpunsorted="/tmp/compare_unsorted"
tmpsorted="/tmp/compare_sorted"
>$tmpunsorted
while read linei
do
while read linej
do
if [ $linei != $linej ]
then
echo $linei $linej | tr " " "\n" | sort | tr "\n" " " >>$tmpunsorted
echo >>$tmpunsorted
fi
done <filelines
done <filelines
sort $tmpunsorted | uniq > $tmpsorted
while read linecompare
do
echo "./program $linecompare"
done <$tmpsorted
# Cleanup
rm -f $tmpunsorted
rm -f $tmpsorted
在这里做什么:
ab
和ba
在未排序的文件中将相同。 sort | uniq
$ tmpunsorted上的sort | uniq
,因此结果是单个参数对的列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.