我有两个名为file1和file2的文件。
file1的内容---> 你好,早上好 世界/印度
file2的内容---> 你好,早上好 世界/中国
我需要检查这些文件的内容是否相同。因为两个文件都有“Hello / Good / Morning”的共同点,所以应按照我的要求打印“EQUAL”。我已为此编写了代码:
file1=/app/webmcore1/Demo/FORLOOP/Kasturi/xyz/pqr.txt
file2=/app/webmcore1/Demo/FORLOOP/Prashast/xyz/pqr.txt
IFS=` `
for i in cat $file1
do
if [ "$i" != '' ]; then
echo "$i"
for j in cat $file2
do
if [ "$j" != '' ]; then
echo "$j"
if [[ $i -eq $j ]]; then
echo "EQUAL"
fi
fi
done
fi
done
但它没有正确显示输出。
答案 0 :(得分:0)
diff
逐行比较文件。如果diff filename
输出任何内容,则文件不同。
如果diff
的输出为空,则它们是相同的。
答案 1 :(得分:0)
已经有一个比较文件的工具,它叫做diff
(实际上比决定是否相等更强大,但可以用于此)。
diff -q file1 file2 >/dev/null && echo "EQUAL"
如果您还想要在文件不相同的情况下打印返回内容:
diff -q file1 file2 >/dev/null && echo "EQUAL" || echo "NOT EQUAL"
答案 2 :(得分:0)
那么,如果文件有任何共同的单词,那么这些文件是“相等的”吗?
result=$(
comm -12 <(tr '[:space:]' '\n' <file1 | sort) <(tr '[:space:]' '\n' <file2 | sort)
)
[[ -n $result ]] && echo EQUAL
或者,就在bash中
words=( $(< file1) )
for word in $(< file2); do
if [[ " ${words[*]} " == *" $word "* ]]; then
echo "EQUAL due to $word"
break
fi
done
EQUAL due to Hello/Good/Morning