AWK does not respect FS '|' in a field containing (15.6)

That seems to work if you add " |" in awk print $

#!/bin/bash
#
# ~/test.sh
#
#

trimstring_sed(){
	s="${1}"
	s="$(printf "${s}" | sed -z 's/^[[:space:]]*//')"
	s="$(printf "${s}" | sed -z 's/[[:space:]]*$//')"
	echo "${s}"
	return 0
}


OIFS="$IFS"
IFS='|'

echo
echo "foo | 1024 | bar (8.3) | /home/test" | awk -F '|' '{print $1" |", $2" |", $3" |", $4" |"}'
echo
read VAR1 VAR2 <<< $(echo "foo | 1024 | bar (8.3) | /home/test" | awk -F '|' '{print $1" |", $3" |"}')
echo "VAR1 : >>>$VAR1<<<"
echo "VAR2 : >>>$VAR2<<<"

VAR1=$(trimstring_sed "${VAR1}")
VAR2=$(trimstring_sed "${VAR2}")


echo "VAR1 : >>>$VAR1<<<"
echo "VAR2 : >>>$VAR2<<<"

IFS="$OIFS"

echo
echo "FINISHED"

Thank you very much @arvidjaar and @hendersj

1 Like