Search through fortran source for a string ignoring comments
Shebang
#!/usr/bin/python is not portable, #!/usr/bin/env python is preferred.
White Space
There should be a blank line between your imports and your function declarations.
Efficiency
You are constantly converting your cond to lowercase.  You don't need to repeatedly do this; just do it once, before the loop.
Right Leaning Code
As you've mention, the code is way-too right leaning.
You could fix this with continue type statements ...
def fgrep(file_name, cond):
    first_valid_chars=tuple(range(0,10 )) + (' ',)

    # Fortran is case insensitive so comparing lower to lower
    cond = cond.lower()
    with open(file_name, 'r') as f:
        for line in f: 
            if line[0] not in first_valid_chars:
                continue

            line1 = line.strip()
            if not line1:    # ignore empty lines
                continue

            if line1[0] == '!':
                continue

            if cond in line1.lower():
                print(line1)

RegEx
You could use a Regular Expression to identify comment lines.

\s*! would find an exclamation mark after any number of spaces.
[^\d\s] would match anything but a digit or a white-space character.

Combined these with the | or-operator, and use .match() to search from the start of the string, and you get an easy comment-line predicate:
def fgrep(file_name, cond):
    # A comment line starts with an exclamation mark as the first non-blank character,
    # or any non-blank character other than a digit as the first character. 
    comment = re.compile(r'\s*!|[^\d\s]')

    # Fortran is case insensitive so comparing lower to lower
    cond = cond.lower()

    with open(file_name, 'r') as f:
        for line in f: 
            if not comment.match(line) and cond in line.lower():
               print(line)

Line numbers
You might want to print out the line number of the matching line, to make it easier to find the lines in the file.  enumerate would help:
def fgrep(file_name, cond):
    # A comment line starts with an exclamation mark as the first non-blank character,
    # or any non-blank character other than a digit as the first character. 
    comment = re.compile(r'\s*!|[^\d\s]')

    # Fortran is case insensitive so comparing lower to lower
    cond = cond.lower()

    with open(file_name, 'r') as f:
        for line_no, line in enumerate(f, 1): 
            if not comment.match(line) and cond in line.lower():
               print(line_no, line, sep=&quot;: &quot;)