Help using Awk and cut with a text file


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Help using Awk and cut with a text file
# 1  
Old 01-02-2012
Help using Awk and cut with a text file

Looking for some help on using awk and cut

I have a text file that has fixed information and want to write a script that will prompt the user for an account to search for and pint the output

The sample line that has the key information looks like this:
Code:
Statement to:                          Account Number:   100

The account number can be 5 digits and is in positions 56 to 60

I am trying to use cut with awk to search the file and print those lines with the variable the user would input, such as:
Code:
echo "    Enter the account you are searching for:"
read a
awk '$3 ~ /Account Number:   $a/ { print $0 }' filename
x="Account Number:  $a"
echo $x

The example above does not work, I need to combine awk with cut to search for "Account Number: $a".

Thanks

Dan

Last edited by Scott; 01-02-2012 at 05:51 PM.. Reason: Added code tags
# 2  
Old 01-02-2012
Try:
Code:
awk "\$5==$a" filename

This User Gave Thanks to bartus11 For This Post:
# 3  
Old 01-02-2012
Quote:
Originally Posted by bartus11
Try:
Code:
awk "\$5==$a" filename

bartus11, thanks for the help. That didn't give the results I was expecting. I know that it is the 5th field but it did not yeild the results I guess you thought it would. That is why I tried to use cut with awk so that I could key off of the Account Number: and then search and cut 56-60. Thanks
# 4  
Old 01-02-2012
Something like this ?
Code:
awk -vA="$a" '$5~A{print "Account Number:  "$5}' filename

---------- Post updated at 12:04 AM ---------- Previous update was at 12:02 AM ----------

Code:
$ X="Statement to:                          Account Number:   100"
$ a=100
$ echo "$X" | awk -vA="$a" '$5~A{print "Account Number:  "$5}'
100


Last edited by ctsgnb; 01-03-2012 at 05:08 AM..
This User Gave Thanks to ctsgnb For This Post:
# 5  
Old 01-02-2012
You do a read a in your shell. Then you use $a in awk, but that won't work because awk knows nothing about shell variables.

When you invoke awk you can however pass variables to it:

awk -v a=$a ...

Now in awk you have a variable a which has the same value as your $a in the shell.

Tip 1: You want to do something with a last word on a line. In awk that is the variable $NF. (NF=number of fields, so if there are 5 columns $NF is the same thing as $5)

Tip 2: When you omit the argument to print, $0 is implied.

Your code could look something like:

Code:
#!/bin/bash
echo "    Enter the account you are searching for:"
read a
awk -v a=$a '/Account Number:/ && $NF==a { print }' filename
x="Account Number:  $a"
echo $x

But I wonder why you want the x and the echo $x.

Greetings,
Eric
This User Gave Thanks to edehont For This Post:
# 6  
Old 01-02-2012
Quote:
Originally Posted by bartus11
Try:
Code:
awk "\$5==$a" filename

Quote:
Originally Posted by edehont
You do a read a in your shell. Then you use $a in awk, but that won't work because awk knows nothing about shell variables.

When you invoke awk you can however pass variables to it:

awk -v a=$a ...

Now in awk you have a variable a which has the same value as your $a in the shell.

Tip 1: You want to do something with a last word on a line. In awk that is the variable $NF. (NF=number of fields, so if there are 5 columns $NF is the same thing as $5)

Tip 2: When you omit the argument to print, $0 is implied.

Your code could look something like:

Code:
#!/bin/bash
echo "    Enter the account you are searching for:"
read a
awk -v a=$a '/Account Number:/ && $NF==a { print }' filename
x="Account Number:  $a"
echo $x

But I wonder why you want the x and the echo $x.

Greetings,
Eric
Eric,

Sorry I guess I should have said I was only echo'ing X so that I could see the string that I was searching for for validation purposes...
Thanks for the help, I will give your script a shot...Thanks again!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Cut text from a file and remove

Hello Friends, I am stuck with the below problem.Any help will be appreciated. I have a file which has say 100 lines. On the second last line I have a line from which i want to remove certain characters.. e.g CAST(CAST( A as varchar(50)) || ',' || CAST(CAST( B as varchar(50)) || ',' ||... (8 Replies)
Discussion started by: vital_parsley
8 Replies

2. Shell Programming and Scripting

Cut text file in place

I have a file that i want to take only the first part of it and discard the rest, to be accurate,I need the first 137097 lines but I cant use split because I dont have enough space on my disck. I need sth to cut the file in its place (3 Replies)
Discussion started by: Heidi Heweidy
3 Replies

3. UNIX for Dummies Questions & Answers

How to cut from a text file based on value of a specific column?

Hi, I have a tab delimited text file from which I want to cut out specific columns. If the second column equals one, I want to cut out columns 1 and 5 and 6. If the second column equals two, I want to cut out columns 1 and 5 and 7. How do I go about doing that? Thanks! (4 Replies)
Discussion started by: evelibertine
4 Replies

4. Shell Programming and Scripting

editing file with awk cut and sed

HI All, I am new to unix. I have a file would like to do some editing by using awk, cut and sed. Could anyone help? This file contain 100 lines. There are one line for example: 2,"102343454",5060,"579668","579668","579668","SIP",,,"825922","035885221283026",1,268,"00:59:00.782 APR 17... (2 Replies)
Discussion started by: mimilaw
2 Replies

5. UNIX for Dummies Questions & Answers

Cut text from a file

How can I cut the text of definite length say from line no. 20 to 1000? It is trivial ques, but I am very new to Unix. Thanks :) (3 Replies)
Discussion started by: JackR
3 Replies

6. Shell Programming and Scripting

cut the second line in a text file

Hi I have some problem to cut out the second line in a output file and send to a new file it's a #!/bin/bash script 1 something 2 something 3 something and after I cut 1 something 3 something New file 2 something Thanks in advance (7 Replies)
Discussion started by: pelle
7 Replies

7. Shell Programming and Scripting

Help need to cut the first word of a line in text file

Hi All, I would like help with a script which can get rid of the first work of all lines in text file. File 1 The name is Scott. Output : name is Scott ---------- Post updated at 02:38 PM ---------- Previous update was at 02:37 PM ---------- Hi ALL There is typo error in... (3 Replies)
Discussion started by: bubbly
3 Replies

8. Shell Programming and Scripting

Cut big text file into 2

I have a big text file. I want to cut it into 2 pieces at known point or I know the pattern of the contents from where it can separate the files. Is there any quick command/solution? (4 Replies)
Discussion started by: sandy221
4 Replies

9. Shell Programming and Scripting

how to cut a field of a line in a text file?

Hi, I have text file which contains lines like : a/a/a/a/.project b/b/b/b/b/.project c/c/c/.project d/.project e/e/e/e/.project i want for all lines the last word .project should be removed and the file should look like : a/a/a/a/ b/b/b/b/b/ c/c/c/ .... how to proceed... (7 Replies)
Discussion started by: bhaskar_m
7 Replies

10. Shell Programming and Scripting

How to cut a text file at a certain spot?

Say I do a date command and get the time from 15 minutes ago. I have a text file with the date printed out every minute or so and I want to cut the file at the date stamp given to me by the 15 minute ago time stamp. Is there an easy way to do this? Example: date +%M gives me 56 I... (2 Replies)
Discussion started by: LordJezo
2 Replies
Login or Register to Ask a Question