[英]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.