To write your first line of code shorter, you can do:
Code:
awk 'NF' infile
There is no need to store anything in a variable; print is not needed in this case since the default action of awk is to print.
For your question what the difference is:
Code:
awk 'NF{s=$0}{print s}' sample.txt
In difference to your 1st line of code, this 2nd line does check for 2 conditions. The 1st is, that if there is a number of fields (NF) greater than zero, it will do the action in the curled brackets. It does this for every line of your input file. It also does this with all other actions and your next action for every line is to print the value of your variable s.
If s is not filled since NF was not true, it still has the former value stored and prints it. So it will give more output than the 1st command line where everything is inside one curled brackets.
With 1st command it will just pass the lines with NF being not true ie. pass the empty lines. In the 2nd command it will print out current value of s even if it hits a new line, since the second curled bracket has no condition in front of it and will always be executed.
I hope it was understandable
Last edited by zaxxon; 12-30-2009 at 07:09 AM..
Reason: Trying to explain better ^^
I'm having a file with 5 fields.
I want to sort that file according to one field
no 3. How shall I do using awk programming.
Any input appreciatable.
regards,
vadivel. (7 Replies)
hi
how to get the values in two columns (may be 2nd and 5th column) of a file line by line.
either i want to get the two fields into different variables and use a for loop to get these values line by line. (3 Replies)
i have a file like this:
awk.lst
smith : sales : 1200 : 2
jones:it:25000 : 2
roger : it : 1500 : 2
ravi | acct | 15000
i have 3 doubts
1)
when i say
awk -F ":" '$2 ~ /'it'/ {print $0}' awk.lst
i am not able to get jones in the ouput , is it because of space issue?
2)how to... (2 Replies)
Hello people
I have a doubt about awk... I´m using it to create a condition where I do not want to use the 0 (zero) value of a certain column.
- This is the original file:
string,number,date
abc,0,20050101
def,1,20060101
ghi,2,20040101
jkl,12,20090101
mno,123,20020101... (2 Replies)
I have executed the below command:
find . -name "Ks*" -type f -exec ls -ltr {} \; | awk '{printf("%ld %s %d %s \n",$5,$6,$7,$8,$9)}'
and here is the output:
1282 Oct 7 2004
51590 Jul 10 2006
921 Oct 7 2004
1389 Jun 4 2003
1037 May 19 2004
334 Mar 24 2004
672 Jul 8 2003
977... (6 Replies)
instead of writing print command in awk, i saw in some posts that we can simply write a number before we end the awk command and it will print the file.
As given below:
$awk '{some manipulation; print}' filename
$awk '{some manipulation}1' filename
I also tried replacing the... (2 Replies)
DE_CODE|1{AXXANY}1APP_NAME|2{TELCO}2LOC|NY
DE_CODE|1{AXXATX}1APP_NAME|2{TELCO}2LOC|TX
DE_CODE|1{AXXABT}1APP_NAME|2{TELCO}2LOC|BT
DE_CODE|1{AXXANJ}1APP_NAME|2{TELCO}2LOC|NJ
i have out put file like below i have to convert it in the format as below.
DE_CODE = AXXANY
APP_NAME= TELCO
LOC = NY... (4 Replies)
Hi,
I got a below requirement from this forum, but the solution provided was not clear.
Below is the requirement
Input file
A 1 Z
A 1 ZZ
B 2 Y
B 2 AA
Required output
B Y|AA
A Z|ZZ (5 Replies)
Discussion started by: stew
5 Replies
LEARN ABOUT DEBIAN
keyhead
keyhead(1) General Commands Manual keyhead(1)Name
keyhead - Change FITS or IRAF header keyword names
Synopsis
keyhead [-hknv] <FITS or IRAF file> kw1=kw1a kw2=kwd2a ... kwn=kwdna
Description
Change the names of keywords in FITS or IRAF image headers. Each current image keyword whose entry is to be modified should be followed by
an equal sign and a second keyword, with no intervening spaces. If the -r option is used, the value of the second keyword is transfered to
that of the first. Otherwise, the name of the first keyword is changed to the second keyword. To change keywords in a list of files, sub-
stitute @<listfile> for the file names on the command line. To change a lot of keywords, put them, one pair separated by an = sign with no
spaces per line, in a file and substitute @<keylistfile> on the command line. If two @ commands are present, the program will figure out
which contains file names and which contains keywords. Lines in a keyword list file which do not contain an = are ignored.
Options-h Write HISTORY line into output header with sethead version, current date and time, and names of keywords set.
-k Write KEYHEAD keyword into output header with the keyhead version, current date and time, and names of keywords whose names are
changed. If a KEYHEAD keyword already exists, move the old value to a HISTORY line before writing the new value
-n Write a new file with an added "e" before the extension.
-r letter
Replace value of 1st keyword with value of 2nd keyword instead of changing the name of the 1st keyword to the 2nd keyword. The 2nd
keyword remains in the header. If the 1st keyword does not exist in the header, it is created.
-v Print confirmations of each keyword change.
Web Page
http://tdc-www.harvard.edu/software/wcstools/keyhead.html
Author
Doug Mink, SAO (dmink@cfa.harvard.edu)
6 July 2001 WCSTools keyhead(1)