linux - BASH - Comparing two files and redirecting the output to something readable -
i need run comparison on 2 files on server , have output include headers, or other indication, difference is.
the script runs list of commands , creates file based on output. output similar this:
device 1 register value1 register b value2 register c value4 ... register h value5 device 2 register value1 register b value2 register c value4 ... register h value5
every night @ midnight, cron run script , create second file current devices , register settings, can compare previous days registers - using:
diff -u file1.txt file2.txt > filediff.txt
if filediff.txt empty, deletes diff, , moves file1.txt file2.txt , deletes file1.txt, i'm left file1.txt.
if filediff.txt file not empty, output similar following:
-register b value2 +register b value3
the problem this: due length of diff output, lose device name has differences, unless difference close device name. there flag can add diff command, or different way check differences between 2 files, include more, or all, of register values can grab device name , register changes (old , new) can put text file reporting:
device 1 old register r value18 new register r value23
just though it, post processing awk like
diff -u file1.txt file2.txt | \ awk -f ' ' '( device_var ~ "" && $1 == "device"){print device_var "\nold " file1_var "\nnew " file2_var; file1_var = ""; file2_var = ""} ( $1 == "device"){device_var = $0} ( $1 == "-register"){file1_var = file1_var " | " $0 } ( $1 == "+register"){file2_var = file2_var " | " $0 } end {print device_var "\nold " file1_var "\nnew " file2_var}'
file1.txt:
device 1 register value1 register b value2 register c value4 device 2 register value1 register b value2 register c value4
file2.txt:
device 1 register value6 register b value7 register c value8 device 2 register value4 register b value4 register c value6
output:
old new device 1 old | -register value1 | -register b value2 | -register c value4 new | +register value6 | +register b value7 | +register c value8 device 2 old | -register value1 | -register b value2 | -register c value4 new | +register value4 | +register b value4 | +register c value6
Comments
Post a Comment