Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the rank-math domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u763016847/domains/golinuxhub.com/public_html/wp-includes/functions.php on line 6114
sed: Insert character in the beginning or end of line with matched pattern - GoLinuxHub

sed: Insert character in the beginning or end of line with matched pattern

In my last articles I had shared the arguments with sed which can be used to perform case insensitive actions (search, replace..) in a file and to delete all blank lines from the file.
Before starting with some command examples let us take a file sample output where we want to perform our sed operation.
Sample File "/tmp/file" with below content

# Port rpc.statd should listen on.
STATD_PORT=662
Outgoing port statd should used. The default is port
# is random
STATD_OUTGOING_PORT=2020
Specify callout program
STATD_HA_CALLOUT="/usr/local/bin/foo"

 

Add content at the beginning of the line

Example 1
Add a "#" comment hash in the beginning of line containing "<span style="color: purple;">STATD_PORT</span>"
Solution

# sed '/STATD_PORT/ s/^/#/' /tmp/file
# Port rpc.statd should listen on.
#STATD_PORT=662
Outgoing port statd should used. The default is port
# is random
STATD_OUTGOING_PORT=2020
Specify callout program
STATD_HA_CALLOUT="/usr/local/bin/foo"

To do in place replacement

# sed -i '/STATD_PORT/ s/^/#/' /tmp/file

 
Example 2
What if the text to be matched in somewhere in the middle of the line
Here match "callout" and add a "#" comment hash in the beginning of the line
Solution

# sed '/callout/ s/^/#/' /tmp/file
# Port rpc.statd should listen on.
STATD_PORT=662
Outgoing port statd should used. The default is port
# is random
STATD_OUTGOING_PORT=2020
#Specify callout program
STATD_HA_CALLOUT="/usr/local/bin/foo"

To do in place replacement use below command

# sed -i '/callout/ s/^/#/' /tmp/file

 
Example 3
You can use the same command to add in some text or word in the beginning of the line of the matched pattern, just replace the "#" with "your text"
For eg

# sed '/callout/ s/^/your text /' /tmp/file
# Port rpc.statd should listen on.
STATD_PORT=662
Outgoing port statd should used. The default is port
# is random
STATD_OUTGOING_PORT=2020
your text Specify callout program
STATD_HA_CALLOUT="/usr/local/bin/foo"

 

Add content at the end of the line

Example 1
Add 'your text' at the end of the line which matches 'callout'

# sed '/callout/ s/$/ your text/' /tmp/file
# Port rpc.statd should listen on.
STATD_PORT=662
Outgoing port statd should used. The default is port
# is random
STATD_OUTGOING_PORT=2020
Specify callout program your text
STATD_HA_CALLOUT="/usr/local/bin/foo"

 
To do the same "in place" replacement

 # sed -i '/callout/ s/$/ your text/' /tmp/file

 
Example 2

Match any text starting with "STATD" and add "your text" at the end of all the matching lines

# sed '/^STATD/ s/$/ your text/' /tmp/file
# Port rpc.statd should listen on.
STATD_PORT=662 your text
Outgoing port statd should used. The default is port
# is random
STATD_OUTGOING_PORT=2020 your text
Specify callout program
STATD_HA_CALLOUT="/usr/local/bin/foo" your text

 
To do "in place" replacement

# sed -i '/^STATD/ s/$/ your text/' /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