我想分散两批文件。如果我只是将它们放在两个不同的目录中并按目录进行区分,则比较将按字母顺序排列,我不想要。
另一种方法是列出text1.txt中的文件和text2.txt中的列表文件:
的text1:
a1
b1
c1
text2的:
c2
a2
b2
我该如何解决这个问题,我的循环将是:
diff a1 c2
diff b1 a2
diff b2 c1
答案 0 :(得分:2)
您可以使用paste
加入这两个文件,然后使用bash循环进行处理。
paste text1 text2 | while read file1 file2; do diff "$file1" "$file2"; done
答案 1 :(得分:2)
在bash中,您可以使用read上的-u
标志来读取不同的fd。这允许您并行读取两个文件:
while read -r -u3 file1 && read -r -u4 file2; do
diff "$file1" "$file2"
done 3<file1.txt 4<file2.txt
答案 2 :(得分:0)
另一种解决方案:
#!/bin/bash
file1="..."
file2="..."
getSize(){
wc -l "$1"|cut -d " " -f1
}
getValueFromLineNumber(){
sed -n "$1p" "$2"
}
diffFromLineNumber(){
f1=$(getValueFromLineNumber "$1" "$file1")
f2=$(getValueFromLineNumber "$1" "$file2")
diff "$f1" "$f2"
}
# get min size
[[ $(getSize "$file1") -le $(getSize "$file2") ]] && min=$s1 || min=$s2
for (( i=1 ; i <= "$min" ; i++)); do
diffFromLineNumber "$i"
done
此解决方案负责处理两个文件的行数不同的情况。