Text pattern with AWK and variables


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Text pattern with AWK and variables
# 1  
Old 02-28-2011
Text pattern with AWK and variables

How to to pass variable to the below awk command
I would like to pass variables to the awk command instead of the constants "a/cc" but I don't know exactly the correct syntax
Code:
awk '/a/,/cc/' temp1.out

file.txt
Code:
a
b
s
cc
g
d

output
Code:
a
b
s
cc

I've tried the following but doesn't make sense!

Code:
$ var=a
$ echo $var | awk '/$1/,/cc/' temp1.out
$ awk -v VAR=$var '/$VAR/,/cc/' temp1.out

Please help

Moderator's Comments:
Mod Comment Please use [code] and [/code] tags when posting code, data or logs etc. to preserve formatting and enhance readability, thanks.

Last edited by zaxxon; 02-28-2011 at 09:24 AM.. Reason: code tags
# 2  
Old 02-28-2011
Code:
VAR=a

awk -v var=$VAR '$0 ~ var,/cc/' temp1.out

# or
awk "/${VAR}/,/cc/" temp1.out

# or
awk '/'${VAR}'/,/cc/' temp1.out

# 3  
Old 02-28-2011
Code:
 
va1="a"
va2="cc"
awk  '/'$va1'/,/'$va2'/' input_file

# 4  
Old 02-28-2011
You really want to avoid expanding shell parameters into awk code unless you are absolutely sure that they will not contain any characters that are special to awk. When possible, it's always preferable to use awk's -v option (demonstrated in some of the preceding examples) to pass values into awk from without.

Regards,
Alister
# 5  
Old 03-01-2011
Thnx for the info but I tried all the alternatives but still not working

here is another example

file.txt
Code:
cc
f
LST GCELL:
aas
la
laaa

When I tried to get the text pattern between "LST GCELL:" and "la" without using variables it works fine but when using the variables still not working!

Code:
# first="LST GCELL:"
# awk '/'$first'/,/la/' file.txt
# awk: syntax error near line 1
# awk: bailing out near line 1


Last edited by Franklin52; 03-01-2011 at 06:45 AM.. Reason: Please use code tags
# 6  
Old 03-01-2011
Double quote $first.
# 7  
Old 03-01-2011
I tried but still the same! can you help please
Code:
# awk '/"$first"/,/la/' file.txt
#


Last edited by Franklin52; 03-01-2011 at 06:46 AM.. Reason: Please use code tags
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk - using variables in pattern which contain full pathname

Hello. I would like to make this bash command working. In the following code, the bash variable 'ZYPPER_LOCAL_REP' contain a full pathname like '/path/to/path/somewhere' The command list all available repositories, search for the string 'zipper_local' then on the same line search for... (4 Replies)
Discussion started by: jcdole
4 Replies

2. Shell Programming and Scripting

Awk: passing shell variables through and extracting text

Hello, new to the forums and to awk. Glad to be here. :o I want to pass two shell (#!/bin/sh) variables through to awk and use them. They will determine where to start and stop text extraction. The code with the variables hard-coded in awk works fine; the same code, but with the shell... (7 Replies)
Discussion started by: bedtime
7 Replies

3. Shell Programming and Scripting

awk to add text to matching pattern in field

In the awk I am trying to add :p.=? to the end of each $9 that matches the pattern NM_. The below executes andis close but I can not seem to figure out why the :p.=? repeats in the split as in the green in the current output. I have added comments as well. Thank you :). file ... (4 Replies)
Discussion started by: cmccabe
4 Replies

4. Shell Programming and Scripting

Passing awk variables to bash variables

Trying to do so echo "111:222:333" |awk -F: '{system("export TESTO=" $2)}'But it doesn't work (2 Replies)
Discussion started by: urello
2 Replies

5. Shell Programming and Scripting

sed and awk usage to grep a pattern 1 and with reference to this grep a pattern 2 and pattern 3

Hi , I have a file where i have modifed certain things compared to original file . The difference of the original file and modified file is as follows. # diff mir_lex.c.modified mir_lex.c.orig 3209c3209 < if(yy_current_buffer -> yy_is_our_buffer == 0) { --- >... (5 Replies)
Discussion started by: breezevinay
5 Replies

6. UNIX for Advanced & Expert Users

use of variables in awk to search for pattern from a file

Hi, I need to extract all the content between two strings stored in two variables "startstring" and "endstring" startstring=hello enstring=world #notworking awk '/$startstring/, $NF ~ /$endstring/ ' file > file2 The above code is not working with variables. It works when actual string... (2 Replies)
Discussion started by: jeanjkj
2 Replies

7. Shell Programming and Scripting

print pattern between two variables awk sed

I am trying to print text between two variables in a file I have tried the following things but none seem to work: awk ' /'$a'/ {flag=1;next} /'$b'/{flag=0} flag { print }' file and also sed "/$a/,/$b/p" file But none seem to work Any Ideas? Thanks in Advance (5 Replies)
Discussion started by: forumbaba
5 Replies

8. Shell Programming and Scripting

Selecting a part of the text (regex pattern, awk, sed)

Hello, let's start by giving you guys a few examples of the text: "READ /TEXT123/ABC123" "READ /TEXT123/ABC123/" "READ TEXT123/ABC123" "READ TEXT123/ABC123/" "READ TEXT123/TEXT456/ABC123" "READ /TEXT123/TEXT456/ABC123" "READ /TEXT123/TEXT456/ABC123/" TEXT and ABC can be and I... (5 Replies)
Discussion started by: TehOne
5 Replies

9. Shell Programming and Scripting

How to pass shell variables to awk's pattern?

How would I get folders owned by specific users.. I want to pass users as a shell variable to awk. drwxr-x--x 3 user1 allusers 512 Oct 14 2006 946157019/ drwxr-x--x 3 user2 allusers 512 Mar 9 2008 94825883/ drwxr-x--x 3 user3 allusers 512 Mar 9 2008 948390501/ ... (3 Replies)
Discussion started by: kchinnam
3 Replies

10. Shell Programming and Scripting

sed: Find start of pattern and extract text to end of line, including the pattern

This is my first post, please be nice. I have tried to google and read different tutorials. The task at hand is: Input file input.txt (example) abc123defhij-E-1234jslo 456ujs-W-abXjklp From this file the task is to grep the -E- and -W- strings that are unique and write a new file... (5 Replies)
Discussion started by: TestTomas
5 Replies
Login or Register to Ask a Question