Search code examples
shellsearchsolaris

Add a word at the beginning of the line in a text file


Search for the group of lines starting with "zone" and add a word "Heading" at the beginning of the previous line. Thanks for your help in advance

Code:

    Zoning A
     zone zonename1
     zone zonename2
     zone zonename3

   Team B
     zone zonename4
     zone zonename5

Desired output:

     Heading Zoning A
       zone zonename1
       zone zonename2
       zone zonename3

     Heading Team B
        zone zonename4
        zone zonename5

Solution

  • Using awk. As long as the group heading doesn't start with word zone:

    $ awk '
    /^ *zone/&&p!~/^ *zone/ {
        sub(/^ */,"&Heading ",p)
    }
    NR>1 { print p }
    { p=$0 }
    END { print p }
    ' file
        Heading Zoning A
         zone zonename1
         zone zonename2
         zone zonename3
    
       Heading Team B
         zone zonename4
         zone zonename5