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

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -