On Mac OS X (bash), I\'m using the following sed at the command line:
$ sed \'s/\\(\\S*\\)/\\1 ~ /\' file1.txt > file2.txt
file1.txt>
Pretty sure your sed does not understand \S to mean "non-whitespace". It's most likely trying to match "zero or more S characters", and it finds that match at the beginning of the string.
\S
S
You want to stick to the POSIX character classes:
sed 's/[^[:blank:]]\+/& ~ /' file1.txt