If pattern match, replace it with #


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting If pattern match, replace it with #
# 1  
Old 07-20-2017
If pattern match, replace it with #

This command is not working for me.
Code:
awk '{if ($1 == server) {$1 = #server} }'  /etc/ntp.conf

Code:
# grep server /etc/ntp.conf
# Use public servers from the pool.ntp.org project.
server 0.rhel.pool.ntp.org iburst
server 1.rhel.pool.ntp.org iburst
server 2.rhel.pool.ntp.org iburst
server 3.rhel.pool.ntp.org iburst
#broadcast 192.161.255 autokey        # broadcast server

Output:
Code:
# grep server /etc/ntp.conf
# Use public servers from the pool.ntp.org project.
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst
server ntpserver.com
server  127.127.1.0     # local clock

#broadcast 192.161.255 autokey        # broadcast server


Last edited by RudiC; 07-21-2017 at 01:46 AM.. Reason: Moved code tag.
# 2  
Old 07-20-2017
Literal strings must be in "quotes". Also you certainly want to explicitly print.
Code:
awk '{if ($1 == "server") {$1 = "#server"} print}'  /etc/ntp.conf

Another solutions
Code:
awk '{if ($1 == "server") {print "#"$0} else {print} }'  /etc/ntp.conf

Code:
awk '{if ($1 == "server") {printf "#"} print}'  /etc/ntp.conf

This User Gave Thanks to MadeInGermany For This Post:
# 3  
Old 07-20-2017
You forgot these two.. also awk wont save the file permanently.


Code:
#server 3.rhel.pool.ntp.org iburst
server ntpserver.com
server  127.127.1.0     # local clock

# 4  
Old 07-21-2017
You forgot to specify WHAT you want exactly.
# 5  
Old 07-21-2017
Howsoever, try
Code:
awk '
/^server/       {$1 = "#" $1
                }
/#broadcast /   {print "server ntpserver.com"
                 print "server  127.127.1.0     # local clock"
                 print ""
                }
1
'  /etc/ntp.conf

, save the result to a temp file, and then cp or mv that back to /etc/ntp.conf (as shown umpteen times in these fora).
This User Gave Thanks to RudiC For This Post:
# 6  
Old 07-21-2017
The following uses a stage variable met that controls where to insert the new text. If there was no match encountered (met==0) or the new text was not yet inserted (met==1), it inserts the new text at the END. Therefore the new text insertion is put into a function printnew().
Code:
awk '
function printnew() {
  print "server ntpserver.com"
  print "server 127.127.1.0 # local clock"
}
{
  if ($1 == "server") {
    print "#"$0
    if (met==0) met=1
  } else {
    print
    if (met==1) {
      print
      printnew()
      met=2
    }
  }
}
END {
  if (met<2) printnew()
}
' /etc/ntp.conf

This User Gave Thanks to MadeInGermany For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Rearrange or replace only the second line after pattern match or pattern match

Im using the command below , but thats not the output that i want. it only prints the odd and even numbers. awk '{if(NR%2){print $0 > "1"}else{print $0 > "2"}}' Im hoping for something like this file1: Text hi this is just a test text1 text2 text3 text4 text5 text6 Text hi... (2 Replies)
Discussion started by: invinzin21
2 Replies

2. Shell Programming and Scripting

How to replace with pattern match using Perl

I have to replace a line, if it has a pattern for example Suppose file.out contains: <tr><td class="cB">Hello</td><td class="cB">1245</td><td class="cB">958</td><td class="cRB">1.34</td><td class="cRB">1.36</td></tr> <tr><td class="cB">world</td><td class="cB">3256</td><td... (8 Replies)
Discussion started by: sol_nov
8 Replies

3. Shell Programming and Scripting

Help with Pattern match and replace

I have a file containing a multiple lines of the format sddfdsf_gaf/ywrtrtwrt_gaf ghfghfgh_ert/xcvxcvcv_ert werwerwwerw_adf/jkhjkhjkjhkjhk_adf I am interested in only the first 3 letters following the "_" character and make those 3 letters uppercase after extraction. So would like to convert... (5 Replies)
Discussion started by: inditopgun
5 Replies

4. Shell Programming and Scripting

Match a Pattern & Replace The value Using AWK

I have a csv file in which i have to search a particular string and replace the data in any column with something else. How do i do it using awk. file ------ 2001,John,USA,MN,20101001,29091.50,M,Active,Y 2002,Mike,USA,NY,20090130,342.00,M,Pending,N... (3 Replies)
Discussion started by: Sheel
3 Replies

5. Shell Programming and Scripting

Help with replace line based on specific pattern match

Input file data20714 7327 7366 detail data20714 7327 7366 main data250821 56532 57634 detail data250821 57527 57634 main data250821 57359 57474 main data250821 57212 57301 main data250821 57140 57159 detail data250821 56834 57082 main data250821 56708 56779 main ... (3 Replies)
Discussion started by: perl_beginner
3 Replies

6. Shell Programming and Scripting

pattern match and replace another pattern in same line

I have a pattern username:x:32005:32006::/usr/local/user:/bin/bash I need to match the line containing username and replace /bin/bash with /usr/local/my/bin/noshell So it becomes username:x:32005:32006::/usr/local/user:/usr/local/my/bin/noshell (7 Replies)
Discussion started by: anilcliff
7 Replies

7. Shell Programming and Scripting

replace pattern after the first pattern match

I need this. aaa OOOOO bbb ccc OOOOO ddd fff ggg OOOOO iii OOOOO I need all OOOOO replaced with PPPPP, but only change after the pattern ggg. So the first two OOOOO should not be changed. OUTPUT should be :- aaa (2 Replies)
Discussion started by: anilcliff
2 Replies

8. Shell Programming and Scripting

Match pattern and replace with string

hi guys, insert into /*<new>*/abc_db.tbl_name this is should be replaced to insert into /*<new>*/${new}.tbl_name it should use '.' as delimiter and replace is there any way to do it using sed (6 Replies)
Discussion started by: sol_nov
6 Replies

9. Shell Programming and Scripting

Match pattern and replace

Hi All, I am new to unix shell scripting, I need your help guys in coming up with some thing for the following scenario: file1 ABC_BASE ${base} ABC_ACC ${acc} ABC_TEST ${test} 01-01-2006 ${from_dt} 01-15-2006 ${to_dt} file 2 I have an file2.sql file which contains: ####This... (4 Replies)
Discussion started by: sol_nov
4 Replies

10. Shell Programming and Scripting

Replace 1 word after pattern match

Hi, Here is my pattern CREATE USER LZ IDENTIFIED BY VALUES 'A0144280ESD70' DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP1 PROFILE DEVELOPER_D_1 ACCOUNT UNLOCK / The Sed command must look for the Line that contains TEMPORARY TABLESPACE and replace the immediate word... (4 Replies)
Discussion started by: rajan_san
4 Replies
Login or Register to Ask a Question