Bash/awk and for loop to create a template


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Bash/awk and for loop to create a template
# 1  
Old 06-15-2015
Bash/awk and for loop to create a template

Source File:
Code:
google.cz http://czechrepublic.google.com/
http://czechrepublic.google.cz http://czechrepublic.google.com/
http://brno.google.cz http://brno.google.com/

Fail Code
Code:
root@arisvm ~/g] $ cat trya
rm -f ss
for i in a.txt
do
#b=`cat $i|awk '{print $1}'`
#c=`cat $i|awk '{print $2}'`
echo "server {"  >> ss
echo "          listen 80;"  >> ss
echo "          server_name  $(cat $i|awk '{print $1}'|head -1 ) "   >> ss
echo "  rewrite  ^/(.*)$   $(cat $i|awk '{print $2}' | head -1 )  permanent;"  >> ss
echo " } "  >> ss
done

output of fail code:
Code:
root@arisvm ~/g] $ cat ss
server {
          listen 80;
          server_name  google.cz
  rewrite  ^/(.*)$   http://czechrepublic.google.com/  permanent;
 }
root@arisvm ~/g] $


Desired Output:
Code:
server {
        listen 80;
        server_name google.cz;
        rewrite  ^/(.*)$ http://czechrepublic.google.com permanent;
        }
server {
        listen 80;
        server_name www.google.cz;
        rewrite  ^/(.*)$ http://czechrepublic.google.com permanent;
        }
server {
        listen 80;
        server_name czechrepublic.google.cz;
        rewrite  ^/(.*)$ http://czechrepublic.google.com permanent;
        }
server {
        listen 80;
        server_name brno.google.cz;
        rewrite  ^/(.*)$ http://brno.google.com permanent;
        }


Last edited by Scrutinizer; 06-15-2015 at 05:27 PM.. Reason: Additional CODE tag
# 2  
Old 06-15-2015
Where do you extract the www.google.cz; ?
Code:
google.cz
czechrepublic.google.cz
brno.google.cz


Anyway, perhaps something like this would be close to a solution.
Code:
awk 'NF>1 {
        sub("http://", "", $1);
        print "server {";
        print "        listen 80;";
        print "        server_name", $1";";
        print "        rewrite  ^/(.*)$", $2, "permanent;";
        print "       }";
}' source_file

This User Gave Thanks to Aia For This Post:
# 3  
Old 06-15-2015
Starting from your "fail code", how would you like these adaptions:
Code:
while read SN RWT
        do      echo "server {"
                echo "  listen 80;"
                echo "  server_name  $SN"
                echo "  rewrite  ^/(.*)$   $RWT  permanent;"
                echo "  }"
         done <a.txt >ss
cat ss
server {
        listen 80;
        server_name  google.cz
        rewrite  ^/(.*)$   http://czechrepublic.google.com/  permanent;
        }
server {
        listen 80;
        server_name  http://czechrepublic.google.cz
        rewrite  ^/(.*)$   http://czechrepublic.google.com/  permanent;
        }
server {
        listen 80;
        server_name  http://brno.google.cz
        rewrite  ^/(.*)$   http://brno.google.com/  permanent;
        }

This User Gave Thanks to RudiC For This Post:
# 4  
Old 06-16-2015
In addition to RudiC's suggestion, you can use ${SN#*://} instead of $SN to strip of the URL protocol part if present..
This User Gave Thanks to Scrutinizer For This Post:
# 5  
Old 06-16-2015
Guys, all is good, but i think.. you guys miss the 1st part and 2nd part of the output. the source file is constant..look closely above and see the output

source file look closely. the top 1 or the very top doesnt have http.compare to line number 2 and 3 and so forth.

Code:
google.cz http://czechrepublic.google.com/
http://czechrepublic.google.cz http://czechrepublic.google.com/
http://brno.google.cz http://brno.google.com/


Code:
server {
        listen 80;
        server_name google.cz;
        rewrite  ^/(.*)$ http://czechrepublic.google.com permanent;
        }
server {
        listen 80;
        server_name www.google.cz;
        rewrite  ^/(.*)$ http://czechrepublic.google.com permanent;
        }
server {
        listen 80;
        server_name czechrepublic.google.cz;
        rewrite  ^/(.*)$ http://czechrepublic.google.com permanent;
        }
server {
        listen 80;
        server_name brno.google.cz;
        rewrite  ^/(.*)$ http://brno.google.com permanent;
        }

---------- Post updated at 09:31 PM ---------- Previous update was at 09:25 PM ----------

Quote:
Originally Posted by Scrutinizer
In addition to RudiC's suggestion, you can use ${SN#*://} instead of $SN to strip of the URL protocol part if present..

Why?? $SN should be called right? whats the diff? care to share please??
thanks

---------- Post updated at 09:36 PM ---------- Previous update was at 09:31 PM ----------

Quote:
Originally Posted by Scrutinizer
In addition to RudiC's suggestion, you can use ${SN#*://} instead of $SN to strip of the URL protocol part if present..

i got you, to remove the http thanks
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Create directory and sub-directory with awk and bash

In the below I am trying to create a parent directory using the R_2019 line from f1 if what above it is not empty. I then create sub-directories under each parent if there is a match between $2 of f1 and $2. Inside each sub-folder the matching paths in $3 and $4 in f2are printed. If there is no... (2 Replies)
Discussion started by: cmccabe
2 Replies

2. Shell Programming and Scripting

awk to create variables to pass into a bash loop to create a download link

I have created one file that contains all the necessary info in it to create a download link. In each of the lines /results/analysis/output/Home/Auto_user_S5-00580-6-Medexome_67_032/plugin_out/FileExporter_out.67... (8 Replies)
Discussion started by: cmccabe
8 Replies

3. Red Hat

Create an unconfigured VMware host from a template that is set to do firstboot --reconfig

I have an Oracle Linux 7.1 vsphere host built. It's be preconfigured with our security configurations. What I would like to do is unconfigure this host. Then set the host to do firstboot --reconfigure. how do I do that using /etc/sysconfig/firstboot? I've tried setting ... (10 Replies)
Discussion started by: os2mac
10 Replies

4. Shell Programming and Scripting

Bash for loop with awk and variables

I'm relatively new to bash scripting and am trying to use awk inside a bash for loop but am having a problem with the variables. for i in $(seq 30 5 60) do # Define variables up and down in AWK eval $(awk 'BEGIN{ print "up=$((i+1))"}' < /dev/null) eval $(awk 'BEGIN{ print... (2 Replies)
Discussion started by: lily-anne
2 Replies

5. Shell Programming and Scripting

filling in strings in a template file using awk

Hi all, I have a template form to fill in for quite a number of files and I want to automate the filling-in process. the concept seemed to be simple but i cant get it work. the template form is a text file containing the information below: File Name: Date Created: Contents: I need to... (4 Replies)
Discussion started by: ida1215
4 Replies

6. Shell Programming and Scripting

Script to create EVIM template with SAS extension

I write lots of SAS programs and would like to create a script that allows me to have a template each time I create a new program file. Specs: I use EVIM for my editor. I run SAS in batch mode. We use RedHat 6. I don't use c shell. I want a script that will do the following: >... (3 Replies)
Discussion started by: starbecks
3 Replies

7. Programming

Perl script to create latex template.

Hi, I have XML file and I extracted some tags and stored in hash, my data as look like this $var1={ 'stud.xml'={ '24'=>'<address> <streetname="xxxx"/> <housenum="138"/"> ... (9 Replies)
Discussion started by: veerubiji
9 Replies

8. Shell Programming and Scripting

Using variables created sequentially in a loop while still inside of the loop [bash]

I'm trying to understand if it's possible to create a set of variables that are numbered based on another variable (using eval) in a loop, and then call on it before the loop ends. As an example I've written a script called question (The fist command is to show what is the contents of the... (2 Replies)
Discussion started by: DeCoTwc
2 Replies

9. Shell Programming and Scripting

create users from template

Create users from template file (0 Replies)
Discussion started by: rijeshpp
0 Replies

10. Shell Programming and Scripting

AWK create loop for fields

Hi everybody: I just create awk script. This script calculate the average of a field, but i want to do it for every fields. The original field has 40 fields of numbers like that: 38.00 51.00 10.00 -99.90 75.00 47.00 4.00 -99.90 69.00 121.00 62.00 6.00 70.00 43.00 36.00 49.00 8.00 36.00 50.00... (1 Reply)
Discussion started by: tonet
1 Replies
Login or Register to Ask a Question