我需要检测2个文件之间的所有差异,并重复比较时,发现特殊字符,并打印在第三个文件。
如果file1为:
a
b
c
d
而file2是:
1:
b
d
--
2:
a
--
3:
c
a
则期望输出为:
1:
a
c
--
2:
b
c
d
--
3:
b
d
有什么建议吗?我尝试的一切都键入了1个文件的差异,而不是两者。
我的代码:
#!/bin/bash
file1=file1
file2=file2
output_file=Filee
#!/bin/bash
# Compare the files and store the differences in a temporary file
diff_file=$(mktemp)
diff --changed-group-format='%<' --unchanged-group-format='' "$file1" "$file2" > "$diff_file"
# Process the differences and write them to the output file
group_number=1
current_group=""
while IFS= read -r line; do
if [[ $line == -- ]]; then
if [[ -n $current_group ]]; then
echo "--" >> "$output_file"
((group_number++))
fi
else
if [[ -z $current_group ]]; then
echo "$group_number:" >> "$output_file"
fi
echo "$line" >> "$output_file"
current_group=$group_number
fi
done < "$diff_file"
# Remove the temporary file
rm "$diff_file"
echo "Comparison completed. Results saved to $output_file"
1条答案
按热度按时间oewdyzsn1#
我期待着你的解决方案。我想知道你是如何解决它的:-)
我已经做了一些使用正则表达式的东西,也适用于字符串(没有空格)。它使用正则表达式来搜索模式,并跳过file 2中的命中。脚本有注解来解释它。
file1
file2
文件3
PS:我更希望有一个投票。银的狂欢徽章就要来了\0/