prompt>cat a
#!/usr/bin/ksh
set -x
LINE="MMECHJ-1 MMECHJ-1H P_PM43CEXP EXECUTING 19/03/2020 205814 19/03/2020 205814 LBKU01G SYS_BATCH 000000 100 0001093 0014704 19/03/2020 root 000 000 00 0013904"
if [[ $(echo $LINE | awk -F"-" '{ print $1"-" $2 }') == "MMECHJ-1" ]] ; then
session=$(echo "$LINE" | awk -F"-" '{ print $1"-"$2 }')
uproc=$(echo "$LINE" | awk -F"-" '{ print $3"-"$4 }' | awk -F";" '{ print $1 }')
fi
echo "$session"
echo "$uproc"
prompt>./a
+ LINE=MMECHJ-1 MMECHJ-1H P_PM43CEXP EXECUTING 19/03/2020 205814 19/03/2020 205814 LBKU01G SYS_BATCH 000000 100 0001093 0014704 19/03/2020 root 000 000 00 0013904
+ awk -F- { print $1"-" $2 }
+ echo MMECHJ-1 MMECHJ-1H P_PM43CEXP EXECUTING 19/03/2020 205814 19/03/2020 205814 LBKU01G SYS_BATCH 000000 100 0001093 0014704 19/03/2020 root 000 000 00 0013904
+ [[ MMECHJ-1 MMECHJ == MMECHJ-1 ]]
+ echo
+ echo
[bex1000@hn5219] /crelan/exp/prod/teste_production/teste_pascal/INC >
$ cat 29176129.sh
#!/usr/bin/ksh
#export PS4='$0 $LINENO:'
#set -x
LINE="MMECHJ-1 MMECHJ-1H P_PM43CEXP EXECUTING 19/03/2020 205814 19/03/2020 205814 LBKU01G SYS_BATCH 000000 100 0001093 0014704 19/03/2020 root 000 000 00 0013904"
if [[ $(echo $LINE | awk -F"-" '{ print $1"-" $2 }') == "MMECHJ-1" ]]
then
session=$(echo "$LINE" | awk -F"-" '{ print $1"-"$2 }')
uproc=$(echo "$LINE" | awk -F"-" '{ print $3"-"$4 }' | awk -F";" '{ print $1 }')
echo "$session"
echo "$uproc"
else
echo "Exception Value using awk:"
echo $LINE | awk -F"-" '{ print $1"-" $2 }'
fi
$ ./29176129.sh
Exception Value using awk:
MMECHJ-1 MMECHJ
#!/usr/bin/ksh
LINE="MMECHJ-1 MMECHJ-1H P_PM43CEXP EXECUTING 19/03/2020 205814 19/03/2020 205814 LBKU01G SYS_BATCH 000000 100 0001093 0014704 19/03/2020 root 000 000 00 0013904"
set -- $LINE
if [[ $1 == "MMECHJ-1" ]]
then
session=$1
uproc=$2
fi
echo $session
echo $uproc
#!/usr/bin/ksh
LINE="MMECHJ-1 MMECHJ-1H P_PM43CEXP EXECUTING 19/03/2020 205814 19/03/2020 205814 LBKU01G SYS_BATCH 000000 100 0001093 0014704 19/03/2020 root 000 000 00 0013904"
if [[ ${LINE%% *} == "MMECHJ-1" ]]
then
session=${LINE%% *}
uproc=$(echo $LINE | awk '{print $2}')
fi
echo $session
echo $uproc
Both of the above return the following (in OpenBSD at least):#!/bin/bash
LINE="MMECHJ-1 MMECHJ-1H P_PM43CEXP EXECUTING 19/03/2020 205814 19/03/2020 205814 LBKU01G SYS_BATCH 000000 100 0001093 0014704 19/03/2020 root 000 000 00 0013904"
ARR=($LINE)
if [[ ${ARR[0]} == "MMECHJ-1" ]]
then
session=${ARR[0]}
uproc=${ARR[1]}
fi
echo $session
echo $uproc
#!/bin/bash
LINE="MMECHJ-1 MMECHJ-1H P_PM43CEXP EXECUTING 19/03/2020 205814 19/03/2020 205814 LBKU01G SYS_BATCH 000000 100 0001093 0014704 19/03/2020 root 000 000 00 0013904"
regex='^(MMECHJ-1) ([^ ]*)'
if [[ $LINE =~ $regex ]]; then
session=${BASH_REMATCH[1]}
uproc=${BASH_REMATCH[2]}
fi
echo -e "$session\n$uproc"
Output:# These lines:
regex='^(MMECHJ-1) ([^ ]*)'
if [[ $LINE =~ $regex ]]; then
# can be shortened to this:
if [[ $LINE =~ ^(MMECHJ-1)\ ([^ ]*) ]]; then
# or this:
if [[ $LINE =~ ^(MMECHJ-1)' '([^ ]*) ]]; then
See how the regex as a whole now can't be 'quoted', but that space in the middle of it had to be \escaped or 'quoted' to avoid a syntax error.
Open in new window
output:Open in new window