sed/awk/tail: how to read 3'de last line

Jasmin shahrzad
Jasmin shahrzad used Ask the Experts™
on
how to put a variable to 3'te las t line from file?
i have a file which last 3 line is
...
...
12   <-- 3'de last line
...    
sql>      <-- last line
how to put a variable to read number 12 from file?
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Distinguished Expert 2017

Commented:
Is the opposite command of tail (head) an option?
You could use wc to count the number of lines, then seek move to ......
VAR=`tail -3 yourfile |head -1`
murugesandinsShell_script Automation /bin/bash /bin/bash.exe /bin/ksh /bin/mksh.exe AIX C C++ CYGWIN_NT HP-UX Linux MINGW32 MINGW64 SunOS Windows_NT

Commented:
Right way which I used to assign one command output to a variable:
        InputFile="./Jasmin_shahrzad.txt"
        if test -f "$InputFile"
        then
                LAST_Third_LINE=''`/usr/bin/tail -3 "$InputFile" |/usr/bin/head -1`''
                echo $LAST_Third_LINE
        else
                if test -d "$InputFile"
                then
                        echo "Input file $InputFile is a directory"
                        echo "Provide valid input file"
                else
                        echo "$InputFile No such file"
                fi
        fi

Open in new window

Reason for using full path of any executable command:
unset -f tail
tail ()
{
         echo Use full path of command /usr/bin/tail $@
         echo instead of using tail $@
         echo Returning \$? to 12
         return 12
}

Open in new window

$ tail -f Dinesh_Murugesan.txt
           tail -f Dinesh_Murugesan.txt
           Use full path of command /usr/bin/tail -f Dinesh_Murugesan.txt
           instead of using tail -f Dinesh_Murugesan.txt
           Returning $? to 12
$ echo $?
12
$ unset -f tail
$ tail -f Dinesh_Murugesan.txt
       tail: cannot open 'Dinesh_Murugesan.txt' for reading: No such file or directory
       tail: no files remaining
murugesandinsShell_script Automation /bin/bash /bin/bash.exe /bin/ksh /bin/mksh.exe AIX C C++ CYGWIN_NT HP-UX Linux MINGW32 MINGW64 SunOS Windows_NT

Commented:
Same using /bin/awk
Following codes assumes handled all exceptions:
/bin/awk '{ EachLine[NR]=$0;}END { print EachLine[NR-2]}' Jasmin_shahrzad.txt

Open in new window


using /bin/sed
NUMOFLINES=''`/usr/bin/wc -l  Jasmin_shahrzad.txt | /bin/sed "s/ .*//;"`''
REQUIRED_LINE_NUM=''`/usr/bin/expr $NUMOFLINES - 3 + 1`''
/bin/sed "$REQUIRED_LINE_NUM"'!d' Jasmin_shahrzad.txt

Open in new window

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial