Long time lurker here. I have a project of bringing every one of our data centers to a newly enforced company standard. Standard naming conventions, domain migrations, etc. So, the people who are setting the standards are providing me with a CSV file. Column 1 has the old value, Column 2 has the new value. It looks like this example I pulled off the Internet:
I am using awk to parse through and find the desired value of column one and then have it print the value right behind it. Here is my script but I cannot for the life of me to get one variable to output properly.
Sorry for being really vague but trying to get a proof of concept here with out giving out any confidential information that may or may not be on the actual real scripts I am writing. Basically, it seems to work but when I run the script via bash -x /path/to/script the newFile never outputs right at all.
The most useful info for people here to help you is input and desired output, otherwise it will take a long time for people to figure out what exactly you want before they start thinking of a solution to your problem.
It doesn't make much sense you assign newFile to some awk command, then check if that same command is equal to the previous answer?
Also, when you run under -x do you notice it trying to match ${i} instead of the value inside of $i? awk is a separate program, it doesn't know your shell variables unless you pass them. Also it will be treated as a regex in that context so a dot will match any character.
This User Gave Thanks to neutronscott For This Post:
Very confusing. What I interpreted is:
1) you have a list of old to new translations in the form: <old>,<new>.
2) you have a list of existing files in the form: /some/path/file-name
3) filenames can have embedded spaces
4) you need to take /some/path/file-name and convert it to /some/path/new-name and then execute the move command do do the work.
Assuming the above list, here is a skeleton script assuming that the translations is in xlate.list and the existing files are in exist.list.
The /path/to/file will be where the comma delimited file lives. On it it will have an existing value, and the value next to it that it should be changed to. So for example, there will be entries like this on the source file:
So, I am basically creating an array of folders by either the find command or ls command depending on the task. I was not the original administrator of any of these servers or file shares. Then checking my comma delimited source file and if it finds a match in the first value, it will rename it via the mv command to the new standardized naming conventions.
My only hang up with my script is I cannot get awk to output one command properly. The thing that kills me, is that it works fine in the terminal, but when I put it in a script it just has a blank output. So if I run this in terminal:
that works and it outputs newvalue1, going off the example I gave earlier. However, when I put that command in my script and use variables, it doesn't seem to output properly. I tested my output by doing this:
bash -x /path/to/script.sh and every line prints out, there are no errors, it works as intended, but I am not seeing that output when I do that. It outputs a blank value. This is what is totally baffling me.
I think you could do things more efficiently than executing an awk to read your CSV file for every old file. However, working with what you've given, you could try this:
The assumption is that the shell variable oldvalue has the name of the file that your script is trying to find in the /path/to/input/file file.
Last edited by agama; 04-22-2012 at 08:18 PM..
Reason: typo
Thanks, I need to sit down and read the book on awk, but never have the time. I will try this when I get to my hotel room. Currently traveling and on my hotspot. I will need to VPN to grab all my resources needed to test this.
Hello friends,
There is one requirment where I need to login into database environment and pull all schema names into a text file ...
as of now below are the schemas available...
$> describe keyspaces;
system_schema system_auth system abc system_distributed system_traces
Now from... (4 Replies)
With this script the output to the terminal does not increment. Can anyone tell me what I need to do to get this to increment output to the terminal?
Here is the output
mpath major,minor number
ls: /dev/mapper/mpathp1: No such file or directory
raw device output
253,44
echo raw device... (5 Replies)
Hello,
Please advise. Scoured this site, as well as google for answers. However if you do not know what to search for, it's a bit hard to find answers.
INPUT:
ACTASS=
802
BASECOS=
279
COSNCHG=
3
CUSCOS=
52
UPLDCOS=
2
DESIRED OUTPUT:
ACTASS=802
BASECOS=279 (13 Replies)
Hello I need some help in outputting Fields when the delimiter has changed:
echo "test1,test2 | test3,test4,test5" | awk -F"," '{print $1,"COUNT",$2,$4}'
prints out:
test1 COUNT test2 | test3 test5
But how to change the -F"," to -F"|" delimiter, so that it separates the
fields from $2... (2 Replies)
Hey there,
I have a table of contents file of the form
1 Title1
1.1 Subtitle1
1.1.1 Subsubtitle1
1.1.2 Subsubtitle2
...
and want to count the number of dots in the first field to find out the level of the section.
I use the gsub function for the job, which works if I pass the pattern... (2 Replies)
Hi,
I'm having some trouble with an awk programme that i'm using to scan ascii files.
Unfortunately I'm not an experienced programmer but I think I am experiencing problems for a two reasons:
1) the awk was written by a PC programmer and it works on his machine, but only partly works... (10 Replies)
I'm trying to take a list of domains, find out the MX resolve it to IP then find out what the NS is and output the contents to a new file.
The only problem i'm having is when checking the Ip or host of the MX i can only get it to print the column with the MX record and the results of the host... (1 Reply)
Hi!
I am a newbie to Unix. I was writing a little game program for fun when thought of an idea to allow data to be saved. I knew to take all of the Predefined variables and put them into a separate file, then including the file in the program. But I am having trouble making it so that the user... (0 Replies)
I have information in a file called HITS. This file has been populated by the user entering search criteria.
the HITS file contains information:
filname.hits: 123.33.345.66 Fri Nov 26 11.45.56.43 GMT 2006
at the moment i am just displayin the information using cat HITS.
... (3 Replies)
When i run sh -x test.sh, expr outputs x=expr $x + 1 instead of doing the arithmetic.. been working on this overnight.. and its being a pain in the arse if you ask me.. :confused::confused:
#!/bin/sh
#script for downloading numerical filenames
chap=1
p=1
count=0
x=1
while
do
if ... (2 Replies)