• VMware

    Learn about VMware virtualization for its products like vsphere ESX and ESXi, vCenter Server, VMware View, VMware P2V and many more

  • Linux

    Step by step configuration tutorials for many of the Linux services like DNS, DHCP, FTP, Samba4 etc including many tips and tricks in Red Hat Linux.

  • Database

    Learn installation and configuration of databases like Oracle, My SQL, Postgresql, etc including many other related tutorials in Linux.

  • Did you find what you needed?
    Show your support and gratitude by making a contribution!!
    Life always offers you a second chance ... Its called tomorrow !!!

    Sunday, June 25, 2017

    sed: Insert multiple lines before or after pattern match

    Our requirement is to add multiple lines after a pattern is matched in a newline which can be before or after the match based upon the requirement

    Below is our sample file /tmp/file
    This is line one
    This is line two
    This is line three
    This is line four

    Here in we have to put below content
    your text 1
    your text 2
    your text 3

    as per below requirement
    1. one line before the string is matched
    2. one line after the string is matched

    Example 1
    Here we will add our content one line before the string is matched

    Solution
    # sed '/This is line two/i\your text 1\nyour text 2\nyour text 3' /tmp/file

    This is line one
    your text 1
    your text 2
    your text 3

    This is line two
    This is line three
    This is line four

    To do in place replacement
    # sed -i '/This is line two/i\your text 1\nyour text 2\nyour text 3' /tmp/file
    Example 2
    Here we will add our content one line after the string is matched

    Solution
    # sed '/This is line two/a\your text 1\nyour text 2\nyour text 3' /tmp/file

    This is line one
    This is line two
    your text 1
    your text 2
    your text 3

    This is line three
    This is line four

    To do in place replacement
    # sed -i '/This is line two/a\your text 1\nyour text 2\nyour text 3' /tmp/file
    Example 3
    You can add your content to a file for eg create a file /tmp/mydata with our content i.e.
    your text 1
    your text 2
    your text 3

    Now you can use below 'sed' command to append the content of "mydata" to /tmp/file"
    # sed '/This is line two/r /tmp/mydata' /tmp/file

    This is line one
    This is line two
    your text 1
    your text 2
    your text 3

    This is line three
    This is line four

    To do in place replacement
    # sed -i '/This is line two/r /tmp/mydata' /tmp/file
    IMPORTANT NOTE: Do not use this unless you are very sure the command will not impact anything else, it is always recommended to take a backup of such file where you plan to do in place replacement

    Follow the below links for more tutorials

    How to find the path of any command in Linux
    How to configure a Clustered Samba share using ctdb in Red Hat Cluster
    How to delete an iscsi-target from openfiler and Linux
    How to perform a local ssh port forwarding in Linux
    How to use yum locally without internet connection using cache?
    What is umask and how to change the default value permanently?
    Understanding Partition Scheme MBR vs GPT
    How does a successful or failed login process works in Linux
    How to find all the process accessing a file in Linux
    How to exclude multiple directories from du command in Linux
    How to configure autofs in Linux and what are its advantages?
    How to resize software raid partition in Linux
    How to configure Software RAID 1 mirroring in Linux
    How to prevent a command from getting stored in history in Linux

    0 comments:

    Post a Comment