Sponsored Content
Full Discussion: Last word of lines
Top Forums UNIX for Dummies Questions & Answers Last word of lines Post 61026 by finster on Thursday 27th of January 2005 09:03:58 AM
Old 01-27-2005
From google:


awk's basic mode of operation is to read its input, chop each line into fields separated by some delimiter (white space by default, but you can change it), and then allow you to do pattern matching and other operations based on those fields. The thing I use it for most often is to grab a particular field.

Let's look at a trusty long ls listing:


--------------------------------------------------------------------------------

% ls -l
-rw-r--r-- 1 jeffy 28 May 9 16:12 Makefile
-rwxr-xr-x 1 jeffy 24576 May 28 11:31 foo
-rw-r--r-- 1 jeffy 57 May 9 16:13 foo.c
-rw-r--r-- 1 jeffy 57 May 28 11:37 foobar
-rw-r--r-- 1 jeffy 71 Jun 2 11:45 fumpty


--------------------------------------------------------------------------------
Suppose I want to grab just the file sizes for some reason. awk numbers fields starting with 1 (not zero like you'd expect from a bunch of unix geeks), so we count across and see that we want to print out field 4, so just do this:
--------------------------------------------------------------------------------

% ls -l | awk '{print $4}'
28
24576
57
57
71


--------------------------------------------------------------------------------
Easy as pie. Notice that the awk program is enclosed in single quotes. This protects the "$4" from the shell so it gets evaluated by awk, not csh (or whatever)
You can print out multiple columns in any order by separating them with commas:


--------------------------------------------------------------------------------

% ls -l | awk '{print $3, $1, $4, $NF}'
jeffy -rw-r--r-- 28 Makefile
jeffy -rwxr-xr-x 24576 foo
jeffy -rw-r--r-- 57 foo.c
jeffy -rw-r--r-- 57 foobar
jeffy -rw-r--r-- 71 fumpty


--------------------------------------------------------------------------------
Notice that the separating white space is not preserved, but gets scrunched down to a single space.
Wait a minute, what's with that "$NF" in that last example? NF is an internal awk variable that always represents the Number of Fields in the current line. By sticking a dollar sign in front of it, I get the equivalent of a "$8" when I run the script on the "ls -l" output. But I don't have to know how many fields there are, I can just grab the last one.


-Thanks .--from your question - it made me learn "awk"!!
 

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

append word to lines

Hi all, Can someone suggest how to append some word to all lines in file. for example word "Honey" to file f1 with lines: Mia Katrin Elizabeth to get Honey Mia Honey Katrin Honey Elizabeth Thanks in advance Givi (3 Replies)
Discussion started by: giviut
3 Replies

2. Shell Programming and Scripting

Word count of lines ending with certain word

Hi all, I am trying to write a command that can help me count the number of lines in the /etc/passwd file ending in bash. I have read through other threads but am yet to find one indicating how to locate a specifc word at the end of a line. I know i will need to use the wc command but when i... (8 Replies)
Discussion started by: warlock129
8 Replies

3. Shell Programming and Scripting

grep lines containing a word only twice.

Hi, I have a query on using grep options. I tried with several options but unable to do it. lanite:52> cat note 123 456 ab 123 ab cv 234 4566 67 ab gh tij ab 12 34 ab ab cv dfgv ab cv ab kjhk ab ghj sdf dfg ab jljklj ab Now, I need to use grep to find the line which contains the... (6 Replies)
Discussion started by: dilipr25
6 Replies

4. Shell Programming and Scripting

deleting lines above and below a word!

i jst want to delete a host entry from httpd.conf for eg: i have entries such as: <VirtualHost 192.168.1.157:80> DocumentRoot /home/karthik ServerName kar </VirtualHost> <VirtualHost 192.168.1.157:80> DocumentRoot /home/karthik1 ServerName www </VirtualHost> <VirtualHost... (4 Replies)
Discussion started by: jacky29
4 Replies

5. Shell Programming and Scripting

Search the word to be deleted and delete lines above this word starting from P1 to P3

Hi, I have to search a word in a text file and then I have to delete lines above from the word searched . For eg suppose the file is like this: Records P1 10,23423432 ,77:1 ,234:2 P2 10,9089004 ,77:1 ,234:2 ,87:123 ,9898:2 P3 456456 P1 :123,456456546 P2 abc:324234 (2 Replies)
Discussion started by: vsachan
2 Replies

6. UNIX for Dummies Questions & Answers

How to grep a word and the two lines before?

Hi I have this txt file getting from a lpstat command. XA40 XA40 0 Unknown 0 0 1 1 1 0 Unknown LPD 0 0 1 1 2 0 Unknown specified 0 0 1 1 3 XA99 @spip READY : (FATAL ERROR) 0781-233 Unknown host spiprs01.mon.local. XA01 @xs00 READY XA01 XA01 0 Unknown 0 0 1 1 1 0 Unknown LPD 0 0 1 1... (5 Replies)
Discussion started by: npatao71
5 Replies

7. UNIX for Dummies Questions & Answers

Delete lines with a word and their above lines

Hi, i have a file like this: A1 kdfjdljfdkljfdlf A2 lfjdlfkjddkjf A3 ***no hit*** A4 ldjfldjfdk A5 ***no hit*** A6 jldfjdlfjdlkfjd I want to remove the lines "***no hit*** and their above line to get an output file like this: (11 Replies)
Discussion started by: the_simpsons
11 Replies

8. Shell Programming and Scripting

Shell Script @ Find a key word and If the key word matches then replace next 7 lines only

Hi All, I have a XML file which is looks like as below. <<please see the attachment >> <?xml version="1.0" encoding="UTF-8"?> <esites> <esite> <name>XXX.com</name> <storeId>10001</storeId> <module> ... (4 Replies)
Discussion started by: Rajeev_hbk
4 Replies

9. Shell Programming and Scripting

Find all lines in file such that each word on that line appears in at least n lines of the file

I have a file where every line includes four expressions with a caret in the middle (plus some other "words" or fields, always separated by spaces). I would like to extract from this file, all those lines such that each of the four expressions containing a caret appears in at least four different... (9 Replies)
Discussion started by: uncleMonty
9 Replies
COOKIETOOL(6)							   Games Manual 						     COOKIETOOL(6)

NAME
cdbsplit - program to operate cookie (fortune) database SYNOPSIS
cdbsplit [options] <cookie-database> <hitfile> DESCRIPTION
This manual page documents briefly the cdbsplit command. This manual page was written for the Debian GNU/Linux distribution because the original program does not have a manual page. Instead, it has some plain text documentation, see below. cdbsplit is a program that can be used to operate cookie database in various formats, the default is standard fortune(6) format, i.e. list of 'cookies' delimited with line containing a single percent ('%') char . With 'cdbsplit' you can split cookie database, or extract parts of it depending on various criteria. OPTIONS
A summary of options is included below. For a complete description, see the documentation in /usr/share/doc/cookietool directory. NOTE, that default behaviour is to overwrite existing database with its reduced version, so the cookies are MOVED to hitfile. The hitfile is never overwritten, but may be appended to. [nothing] Shows summary of options. -c case-sensitive comparisons (for both keywords and groups) -d[0-3] how fussy about word delimiters? (default: 2) -k<keyword> optional keyword -K<keyword> mandatory keyword (use both of them to form boolean expressions) -l<min_lines> minimal cookie length (in lines) -L<max_lines> maximal cookie length (in lines) -w<chars> minimal line width (in chars) -W<chars> maximal line width (in chars) -n<min_number> start at cookie <min_number> -N<max_number> stop after <max_number> cookie -m<chars> find groups of cookies starting with <n> matching characters (database must be sorted for this to make sense!) -x extract only, don't modify <cookie-database> -a append, don't overwrite <hitfile> if such a filename exists -f[0-3] input file format - -f3: cookies are separated by '%%' lines; -f2: cookies are separated by '%' lines (DEFAULT); -f1: each line is a cookie; -f0: each word is a cookie. SEE ALSO
cookietool(6), cdbdiff(6) BUGS
None known. AUTHOR
Upstream author and Aminet cookietool.lha package with AmigaOS binaries uploader is Wilhelm Noeker, <wnoeker@t-online.de>. Unix manpages (including this one) and makefile are maintained by Miros/law L. Baran <baran@debian.org>. This manual page uses many excerpts from the original README file. May 19, 2001 COOKIETOOL(6)
All times are GMT -4. The time now is 04:10 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy