using the $1 $2 etc for words in awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting using the $1 $2 etc for words in awk
# 1  
Old 07-22-2010
Error using the $1 $2 etc for words in awk

So if I have an awk statement that is basically just looking at the NF at if its more than 2, then print out the first 2 words, and all the rest on another line. I know that $1 and $2 are the first two fields, but how would I symbolise telling it to print all the other fields regardless of how many there are on a newline?

Just some quick pseudocode as im away from my PC

Code:
if (NF>2){
print $1 FS $2 "\n" 
}

now after the \n I want to know how i can tell it to print out all the other fields, bearing in mind that the number of fields it checks on each line can vary.
Many thanks
# 2  
Old 07-22-2010
Code:
awk 'NF > 2 {
  for (i = 0; ++i <= NF;)
    printf "%s", ($i (i == 2 ? RS : FS))
  print x
  }' infile

This User Gave Thanks to radoulov For This Post:
# 3  
Old 07-22-2010
Hi.

You could use a for-loop:

Code:
for( i = 3; i <= NF; i++ ) ...

Or, perhaps:
Code:
$ echo 1 2 3 4 5 6 | awk '{if( NF > 2) { $3 = RS $3}}1'
1 2
3 4 5 6

These 2 Users Gave Thanks to Scott For This Post:
# 4  
Old 07-22-2010
If I got you correctly,Try:

Code:
awk 'NF>2 { print $1" "$2; $1=$2=""; print; }' file

This User Gave Thanks to dennis.jacob For This Post:
# 5  
Old 07-22-2010
Quote:
Originally Posted by scottn
Hi.
Code:
$ echo 1 2 3 4 5 6 | awk '{if( NF > 2) { $3 = RS $3}}1'
1 2
3 4 5 6

Nice Smilie
# 6  
Old 07-22-2010
what does 1 means in your code

Hi Rad,
I am new to awk,
Pls tell me what does mean by 1 at end in your code
Code:
echo 1 2 3 4 5 6 | /usr/xpg4/bin/awk '{if( NF > 2) { $3 = RS $3}}1'

# 7  
Old 07-22-2010
Quote:
Originally Posted by CaapAjayShukla
Hi Rad,
I am new to awk,
Pls tell me what does mean by 1 at end in your code
Code:
echo 1 2 3 4 5 6 | /usr/xpg4/bin/awk '{if( NF > 2) { $3 = RS $3}}1'

This is scottn's code, not mine.
The 1 simply means true, which in the pattern/expression part causes the execution of the default action, which is print the current record.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Permutation Words in awk

i have 13 different words. I need to get permutations like all combinations of this words: word1 word2 word3 word4 word5 word6 word7 word8 word9 word10 word11 word12 word13 But the combinations only should be 12 words long. Is there a fast efficient way to do this? Maybe with linux tool... (1 Reply)
Discussion started by: watcherpro
1 Replies

2. Programming

[awk]Chinese words!!

Is there a way to extract chinese words from a text written in an European Language? I want to create a glossary and finding a way would make me save time! Thank you! (3 Replies)
Discussion started by: ettore8888
3 Replies

3. Shell Programming and Scripting

AWK count letters words

Hi All! can anyone help me with this code? I want to count words or letters in every line with if(count>20){else echo $myline} awk '/<script /{p=1} /<\/script>/{p=0; next}!p' index.html | while read myline; do echo $myline done Thank you !!! (3 Replies)
Discussion started by: sanantonio7777
3 Replies

4. UNIX for Advanced & Expert Users

Need help either with awk or sed to get text between words

Hello All, My requirement is to get test between two words START & END, something like html tags Eg. Input file: START Line1 Line2 Line3 CLOSE START Line4 Line5 Line6 END START Line7 START Line8 (7 Replies)
Discussion started by: konerusuneel
7 Replies

5. Shell Programming and Scripting

search for a pattern using awk between two words

Hi, how can we search for a pattren between two words? below are the examples input 1)select from table_name c1,c2,c3,c4,fn(),fn2(),c5;-->false 2)select from table_name c1,c2,c3,c4;--True 3)select from table c1, c2, c3, fn(), c4;-->true 4)select from table_name c1, c2, c3;-->true... (11 Replies)
Discussion started by: manasa_vs
11 Replies

6. Shell Programming and Scripting

search several words with awk command

Hello, I want to test if i find the word CACCIA AND idlck in a file, i have to print a message Ok. For that , i need to user a awk command with a && logical. Can you help me ? :confused: ### CACCIA: DEBUT ### if $(grep -wqi "$2" /etc/passwd); then && rm /etc/security/.idlck ... (3 Replies)
Discussion started by: khalidou13
3 Replies

7. Shell Programming and Scripting

How to get a known word between two known words using awk

hi I have posted it earlier but i was unable to put my exact problem.This time posting in parts. I have a text file which i had transferred to UNIX.It has strings like: alter table table_name add (column_name); as well as modify options. now i need to read the table name between alter... (3 Replies)
Discussion started by: alisha
3 Replies

8. Shell Programming and Scripting

awk after words

hi sorry, newbie for scripting.. the text file: abcdefghijk%%$%^U^%234454234 I got awk script: awk ' ($1 == "abcd") the output only show: abcd I tried using asterix: awk ' ($1 == "abcd*") but same output abcd only... how can I get all of the line ?? (6 Replies)
Discussion started by: flekzout
6 Replies

9. Shell Programming and Scripting

Extract numbers below words with awk

Hi all, Please some help over here. I have a Sales.txt file containing info in blocks for every sold product in the pattern showed below (only for 2 products). NEW BLOCK SALE DATA PRODUCT SERIAL 79833269999 146701011945004 .Some other data .Some... (17 Replies)
Discussion started by: cgkmal
17 Replies

10. UNIX for Dummies Questions & Answers

merging 2 lines with awk and stripping first two words

Hey all i am pretty new to awk... here my problem. My input is something like this: type: NSR client; name: pegasus; save set: /, /var, /part, /part/part2, /testpartition, /foo/bar,... (9 Replies)
Discussion started by: bazzed
9 Replies
Login or Register to Ask a Question