Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7577817
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 30, 20262026-05-30T17:17:05+00:00 2026-05-30T17:17:05+00:00

I am very new to Bash scripting. I am trying to write a script

  • 0

I am very new to Bash scripting. I am trying to write a script that works with two files. Each line of the files looks like this:

INST <_variablename_> = <_value_>;  

The two files share many variables, but they are in a different order, so I can’t just diff them. What I want to do is go through the files and find all the variables that have different values, or all the variables that are specified in one file but not the other.

Here is my script so far. Again, I’m very new to Bash so please go easy on me, but also feel free to suggest improvements (I appreciate it).

#!/bin/bash
line_no=1
while read LINE
do
  search_var=`echo $LINE | awk '{print $2}'`
  result_line=`grep -w $search_var file2`
  if [ $? -eq 1 ]
  then
    echo "$line_no: not found [ $search_var ]"
  else
    value=`echo $LINE | awk '{print $4}'`
    result_value=`echo $result_line | awk '{print $4}'`
    if [ "$value" != "$result_value" ]
    then
      echo "$line_no: mismatch [ $search_var , $value , $result_value ]" 
    fi
  fi
  line_no=`expr $line_no + 1`
done < file1

Now here’s an example of some of the output that I’m getting:

111: mismatch [ TXAREFBIASSEL , TRUE; , "TRUE"; ]
 , 4'b1100; ] [ TXTERMTRIM , 4'b1100;
113: not found [ VREFBIASMODE ]
 , 2'b00; ]ch [ CYCLE_LIMIT_SEL , 2'b00;
 , 3'b100; ]h [ FDET_LCK_CAL , 3'b101;

The first line is what I would expect (I’ll deal with the quotes later). On the second, fourth, and fifth line, it looks like the final value is overwriting the “line_no: mismatch” part. And furthermore, on the second and fourth line, the values DO match–it shouldn’t print anything at all!

I asked my friend about this, and his suggestion was “Do it in Perl.” So I’m learning Perl right now, but I’d still like to know what’s going on and why this is happening.

Thank you!

EDIT:

Sigh. I figured out the problem. One of the files had Unix line breaks, and the other had DOS line breaks. I actually thought this might be the case, but I also thought that vi was supposed to display some character if it opened a dos-ended file. Since they looked the same, I assumed that they were the same.

Thanks for your help and suggestions everybody!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-30T17:17:06+00:00Added an answer on May 30, 2026 at 5:17 pm

    Rather than simply replacing the Bash language with Perl, how about a paradigm shift?

    diff -w <(sort file1) <(sort file2)
    

    This will sort both files, so that the variables will appear in the same order in each, and will diff the results (ignoring whitespace differences, just for fun).

    This may give you more or less what you need, without any “code” per se. Note that you could also sort the files into intermediate files and run diff on those if you find that easier…I happen to like doing it with no temporary files.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm very new to bash scripting and I'm trying to practice by making this
I am very new to bash scripts, and for my first script attempt I
I have a bash script that tests whether the sftp connection exists, very simple
I'm very new in shell scripting, and I encountered a problem that is quite
I'm trying to write a BASH script for patching my CentOS servers. My goal
Very new to JQuery and MVC and webdevelopment over all. I'm now trying to
Im very new to SQL but need to write a query to do the
I am very new in bash and never coded in before but this task
I'm trying to run multiple instances of a node server using a bash script.
I'm quite new to bash scripting and usually avoid it all costs but I

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.