0

I have a question regarding manipulating a file content using bash. So I have a conf file has the content as below:

#set_var EASYRSA_REQ_COUNTRY    "US"                                                                        
#set_var EASYRSA_REQ_PROVINCE   "California"                                                                
#set_var EASYRSA_REQ_CITY       "San Francisco"                                                             
#set_var EASYRSA_REQ_ORG        "Copyleft Certificate Co"                      
#set_var EASYRSA_REQ_EMAIL      "[email protected]"                                                            
#set_var EASYRSA_REQ_OU         "My Organizational Unit"  

I want to put a line of command in a bash file to automate the process to change from above to uncomment lines:

set_var EASYRSA_REQ_COUNTRY    "US"                                                                        
set_var EASYRSA_REQ_PROVINCE   "Texas"                                                                
set_var EASYRSA_REQ_CITY       "Austin"                                                             
set_var EASYRSA_REQ_ORG        "Copyleft Certificate Co"                      
set_var EASYRSA_REQ_EMAIL      "[email protected]"                                                            
set_var EASYRSA_REQ_OU         "My CompanyName" 

The problem I have is the whitespace and end of line when I try to combine the content to and sed command:

sed -e 's/#set_var EASYRSA_REQ_COUNTRY[ \t]*"US"\n#set_var EASYRSA_REQ_PROVINCE[ \t]*"California"\n#set_var EASYRSA_REQ_CITY[ \t]*"San Francisco"\#set_var EASYRSA_REQ_ORG[ \t]*"Copyleft Certificate Co"\n#set_var EASYRSA_REQ_EMAIL[ \t]*"[email protected]"\n#set_var EASYRSA_REQ_OU[ \t]*"My Organizational Unit"\n/set_var EASYRSA_REQ_COUNTRY[ \t]*"US"\nset_var EASYRSA_REQ_PROVINCE[ \t]*"Texas"\nset_var EASYRSA_REQ_CITY[ \t]*"Austin"\set_var EASYRSA_REQ_ORG[ \t]*"Copyleft Certificate Co"\nset_var EASYRSA_REQ_EMAIL[ \t]*"[email protected]"\nset_var EASYRSA_REQ_OU[ \t]*"My CompanyName"\n/g' file.conf
 

Thanks

1 Answer 1

0

$ wc -l file.conf

6 file.conf

$ cat file.conf

#set_var EASYRSA_REQ_COUNTRY    "US"                                                                        
#set_var EASYRSA_REQ_PROVINCE   "California"                                                                
#set_var EASYRSA_REQ_CITY       "San Francisco"                                                             
#set_var EASYRSA_REQ_ORG        "Copyleft Certificate Co"                      
#set_var EASYRSA_REQ_EMAIL      "[email protected]"                                                            
#set_var EASYRSA_REQ_OU         "My Organizational Unit"  

sed -i 's/^#set_var/set_var/; s/California/Texas/; s/San Francisco/Austin/; s/[email protected]/[email protected]/; s/My Organizational Unit/My CompanyName/; 7,$d' file.conf

$ wc -l file.conf

6 file.conf

$ cat file.conf

set_var EASYRSA_REQ_COUNTRY    "US"                                                                        
set_var EASYRSA_REQ_PROVINCE   "Texas"                                                                
set_var EASYRSA_REQ_CITY       "Austin"                                                             
set_var EASYRSA_REQ_ORG        "Copyleft Certificate Co"                      
set_var EASYRSA_REQ_EMAIL      "[email protected]"                                                            
set_var EASYRSA_REQ_OU         "My CompanyName"  
3
  • oh nice, that's smart, can you explain why do you have 7,$d in the end? Thank you.
    – kluo
    May 17, 2021 at 13:41
  • @kluo To remove anything in or after 7 th line
    – Madhubala
    May 18, 2021 at 8:55
  • @kluo feel free to mark answer as accepted if it helped
    – Madhubala
    May 19, 2021 at 13:57

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .