Well, it didn't take me long to get stumped again. I assure you that I'm not mentally deficient, just new to scripting.
So, here's the gist. I want to redirect output from awk based off of which branch of an if-else statement under which it falls.
Code:
#!/bin/bash
#some variables
CURPATH=`dirname $0`
CSV=$CURPATH/output.csv
HNS=$CURPATH/standard_hosts.txt
GROUPS=$CURPATH/groups.csv
DOMAINS=$CURPATH/domains.txt
if [ -f $CSV ];
then
rm $CSV
echo "Deleted old CSV"
fi
if [ -f $HNS ];
then
rm $HNS
echo "Deleted old standard_hosts.txt"
fi
#Convert useless HTM file into a csv file
tr -d '\t' < $1 | sed 's/<.*>//g' | sed '/^$/d' | tr '\n' ',' | perl -pe 's/,Entity/\nEntity/g' | sed 's/Entity name: //g' > $CSV
#Go through each line, and determine if it's a host, a subnet, a group, or a domain object. Yes, I'm sure there are easier ways to do this, but I'm after effective, not elegant.
#First, we grab all of the host objects.
cat $CSV | egrep -v "Network Entity" | head | gawk -F, '
{for (i=1;i<=NF;i++)
{if (($i == "Network address") && ($(i+1) ~ /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/))
{
{printf $1 >> $HNS};
{printf "," $(i+1)};
{NM = 0};
{for (j=1; j<=NF; j++)
{if (($j == "Netmask") && ($(j+1) ~ /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/))
{
{print "," $(j+1) >> $HNS;}
{NM = 1};
}
};
}
{if (NM == 0) {print ",255.255.255.255" >> $HNS}};
}
else
{if (($i == "Network address") && ($(i+1) !~ /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/))
{
{print "object network " $1 >> $DOMAINS; }
{print system("./dig.awk $1" $(i+1)) >> $DOMAINS ;}
{print "255.255.255.255" >> $DOMAINS;}
}
}
}
}'
Whereas, when I read the code, I think it'll take stuff that is a straight up hostname / netmask pair and put them in one file (denoted by $HNS), while taking everything that is a domain name and putting them another file (denoted by $DOMAINS), what ends up happening is it creates a bunch of files based off of the contents of $1, which is not what I'm after.
Any ideas? I'm sure it's something simple that I'm doing incorrectly. Google searches have led me to all sorts of stuff about redirecting output for the entire program, but not for individual code branches.
If I wanted to redirect output to multiple log files, what would be the best way to do that?
echo "Unix is awesome" >>unixgod.log >>unixgod.log (3 Replies)
Im currently using execl() to run the ls command and redirect the output to a text file. Unfortunately, when I check the text file, no information has been written to it.
I am calling execl() with the ls command like this
execl( "/bin/ls" , "-al" , '>' , "dirlist.txt" ,(char *) 0 );
... (5 Replies)
I have a simple script written in awk whose purpose is to go through some php files and replace some strings. Naturally, I want the changes to be written out to the files. The script looks generally as follows:
{
gsub(/'replacethis'/, "with this"); # a bunch of these
print $0 > FILENAME
}... (3 Replies)
Hello,
I have a set of data (comma seperated) that I want to save to multiple files according to one of the fields in the data set.
I can easily do this with the following script:
BEGIN { FS = OFS = ","}
NF {print $0 >> ($2 "" ".csv")}
It works perfectly on a set of dummy data I have set... (8 Replies)
Hello all,
I have the following 2 questions..
1) I would like to capture the output of an echo command to 2 different files at the same time. This does not seem to work. Any ideas?
echo ==== started on `date` ==== >> res1.log res2.log
2) Would it be possible to just get the 5th... (2 Replies)
I am trying to filter records based on number of "|", delimiter in my application. If number of "|" is greater than 14 its a bad record, else its a good record. I have to redirect output to two different files based on the if-then-else evaluation in AWK.
if number of “|” in file_0 > 14
... (2 Replies)
Discussion started by: siteregsam
2 Replies
7. Post Here to Contact Site Administrators and Moderators
Hi All,
I am trying to redirect the grep output to multiple files, can you please help with that.
Below is the command im using to match my pattern
grep \<proxyType\>$PxyType $DIR/EndureFiles.json > File_Name*.json
Note : $DIR and $PxyType is already defined in my script
Im able... (0 Replies)
Hi,
I have a following code in which I am unable to redirect to multiple files. Can anybody please help with some corrections
awk -F, '{ if ( substr($1,26,2)=="02" && substr($1,184,14)=="MTSCC_VALFIRST") {
array1++
array2++
array3++
}
else if (substr($1,26,2)=="03" &&... (4 Replies)
Hi All,
I am trying a shell script and need your help on taking the results to different output files.
I have tried the below code:
nawk '
{CNF = (length()-10)/7
printf "%9s", substr ($0, 1, 9)
for (i=0; i<=CNF; i++) T = substr ($0, 10+i*7, 7)
TMP = 100 - (T + T + T + T + T + T + T + T... (24 Replies)
I have this line were I am selecting some fields from one file and creating a new file for the selected data.
awk -F "\"*,\"*" '{print $1"," $2}' folderone/list.txt > folderone/qlist.txt
This works, but then from this new file I want it to create a new file where it separates data:
$2 >5 it... (2 Replies)
Discussion started by: rluna
2 Replies
LEARN ABOUT PLAN9
netmasks
netmasks(4) File Formats netmasks(4)NAME
netmasks - network mask database
SYNOPSIS
/etc/inet/netmasks
/etc/netmasks
DESCRIPTION
The netmasks file contains network masks used to implement IP subnetting. It supports both standard subnetting as specified in RFC-950 and
variable length subnetting as specified in RFC-1519. When using standard subnetting there should be a single line for each network that is
subnetted in this file with the network number, any number of SPACE or TAB characters, and the network mask to use on that network. Network
numbers and masks may be specified in the conventional IP `.' (dot) notation (like IP host addresses, but with zeroes for the host part).
For example,
128.32.0.0 255.255.255.0
can be used to specify that the Class B network 128.32.0.0 should have eight bits of subnet field and eight bits of host field, in addition
to the standard sixteen bits in the network field.
When using variable length subnetting, the format is identical. However, there should be a line for each subnet with the first field being
the subnet and the second field being the netmask that applies to that subnet. The users of the database, such as ifconfig(1M), perform a
lookup to find the longest possible matching mask. It is possible to combine the RFC-950 and RFC-1519 form of subnet masks in the net-
masks file. For example,
128.32.0.0 255.255.255.0
128.32.27.0 255.255.255.240
128.32.27.16 255.255.255.240
128.32.27.32 255.255.255.240
128.32.27.48 255.255.255.240
128.32.27.64 255.255.255.240
128.32.27.80 255.255.255.240
128.32.27.96 255.255.255.240
128.32.27.112 255.255.255.240
128.32.27.128 255.255.255.240
128.32.27.144 255.255.255.240
128.32.27.160 255.255.255.240
128.32.27.176 255.255.255.240
128.32.27.192 255.255.255.240
128.32.27.208 255.255.255.240
128.32.27.224 255.255.255.240
128.32.27.240 255.255.255.240
128.32.64.0 255.255.255.192
can be used to specify different netmasks in different parts of the 128.32.0.0 Class B network number. Addresses 128.32.27.0 through
128.32.27.255 have a subnet mask with 28 bits in the combined network and subnet fields (often referred to as the subnet field) and 4 bits
in the host field. Furthermore, addresses 128.32.64.0 through 128.32.64.63 have a 26 bits in the subnet field. Finally, all other
addresses in the range 128.32.0.0 through 128.32.255.255 have a 24 bit subnet field.
Invalid entries are ignored.
SEE ALSO ifconfig(1M), inet(7P)
Postel, Jon, and Mogul, Jeff, Internet Standard Subnetting Procedure, RFC 950, Network Information Center, SRI International, Menlo Park,
Calif., August 1985.
V. Fuller, T. Li, J. Yu, K. Varadhan, Classless Inter-Domain Routing (CIDR): an Address Assignment and Aggregation Strategy, RFC 1519,
Network Information Center, SRI International, Menlo Park, Calif., September 1993.
T. Pummill, B. Manning, Variable Length Subnet Table For IPv4, RFC 1878, Network Information Center, SRI International, Menlo Park, Calif.,
December 1995.
NOTES
/etc/inet/netmasks is the official SVr4 name of the netmasks file. The symbolic link /etc/netmasks exists for BSD compatibility.
SunOS 5.10 7 Jan 1997 netmasks(4)