14 comment

  1. That’s a good tip! By the way, how to read a file, compare a field value then insert record in between using awk? Can you help? Thanks. :-)

  2. Hi great article. One suggestion is that the file names in the awk scripts can be substituted for the standard input.

    e.g. to get the number of lines in a file you could use

    wc -l filename | awk '{ print $1 }'

    Andre

  3. Exactl, even I wanted to know the same. If anyone could help me with this. :)

    Ed Dagos September 16, 2011

    Hi All,
    Is it possible to find a pattern in the file and then print the previous 3 or 4 lines using awk/sed/grep ??
    Regards,

    1. Search for “foo” in data.txt and display 3 lines of leading context before matching line:

      grep -B3 "foo" data.txt

      The -A options display $NUM lines of trailing context after matching lines:

      grep -A3 "foo" data.txt
      1. Thanks Vivek for your response. However, on Sun OS 5.10 Options -B and -A do not work. Would you mind to tell me what environment have you tested it.
        Regards,
        Ed

  4. Hi,
    If I have 8 lines (8 row with 1 column) in a file, can I print every 2 row in each row? Like
    1
    2
    3
    4
    .
    .
    wil be
    12
    34
    ..
    Thanks

  5. help me please
    cat $file | awk ‘{ split($1, a, “;”) ;
    if( a[2]= “wlan1” ) # how to line print
    if( a[4]!=0.00) }’

  6. Is there any way to use awk (or any other aspect of unix shell scripting) to “declare” fields from position a to position b etc in the outline of the input, and reference those fields, IF there are no “automatic separators like a spacee, semicolon, etc. I have input with no separators and would love to use something “like” the usual while read LINE ; do processinputintooutput done < filename, but I'm not sure it can be done in shell scripting without separators, though it sounds like awk would work if I DID have separators.

  7. i have a file a.dat with following input

    123456789

    the first 5 digits represents ABC
    the next 4 digits represents XYZ

    how do i use awk to do the following

    If XYZ = 6789 then print ABCXYZ in a new file
    else
    skip that line

Leave a Comment