I don't know of any command that will do this directly for you - and awk would probably be the way to go, but I'm no awk guru. This could probably also be done through some very impressive sed magic - but again, I'm no sed guru.

So doing this with a shell script, I would say the first logical step would be to get the first line, and the last line - from there we can manipulate those two strings.

FILE=$1   #read the filename as an argument
FIRST_LINE=`head -1 $FILE` 
LAST_LINE=`tail -1 $FILE`

The next easy part will be grabbing the first letter, using cut:

FIRST_CHAR=`echo $FIRST_LINE | cut -c 1`

Of course, we could have skipped assigning the FIRST_LINE variable with this:

FIRST_CHAR=`head -1 $FILE | cut -c 1`

Getting the last character is a little more dificult.

num_chars=`echo $LAST_LINE | wc -c` # number of characters in the last line
num_chars=`expr  $num_chars - 1`    #subtract 1 because counting starts at 1, not 0
LAST_CHAR=`echo $LAST_LINE | cut -c $num_chars`

All in all, we end up with:

FILE=$1   #read the filename as an argument
FIRST_CHAR=`head -1 $FILE | cut -c 1`
LAST_LINE=`tail -1 $FILE`

num_chars=`echo $LAST_LINE | wc -c` # number of characters in the last line
num_chars=`expr  $num_chars - 1`    #subtract 1 because counting starts at 1, not 0

LAST_CHAR=`echo $LAST_LINE | cut -c $num_chars`

echo "${FIRST_CHAR}${LAST_CHAR}"

#echo "${FIRST_CHAR} ${LAST_CHAR}"   #put a space between
#echo "${FIRST_CHAR}\n${LAST_CHAR}"  #return on different lines

voila.

can anyone tell me how I can print the first or the last character from a sh file ?

i have done research on regular expression and the grep... i couldn't find any cmd that i can use to achieve this task. Thanks a lot.

awk 'BEGIN{FS=""}NR==1{print $1}{l=$NF}END{print l}' file
This article has been dead for over six months. Start a new discussion instead.