Jasmin shahrzad
asked on
sed/awk/tail: how to read 3'de last line
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?
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?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Right way which I used to assign one command output to a variable:
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
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
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
}
$ tail -f Dinesh_Murugesan.txttail -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
Same using /bin/awk
Following codes assumes handled all exceptions:
using /bin/sed
Following codes assumes handled all exceptions:
/bin/awk '{ EachLine[NR]=$0;}END { print EachLine[NR-2]}' Jasmin_shahrzad.txt
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
You could use wc to count the number of lines, then seek move to ......