A razão pela qual isso não funciona pode ser inferida a partir da mensagem de erro (que você omitiu fornecer):
sed: -e expression #1, char 14: unterminated 's' command
O comando sed
não aceita um valor de várias linhas. Você tem que recolher suas múltiplas linhas em uma única linha. Você poderia fazer isso com um script como este:
#!/bin/ksh
S_ids="'$(cut -d'|' -f1 file1.txt | tr '\n' ' ' | sed -e 's/ *$//' -e "s/ /','/g")'"
sed -i "s/FLAG/${S_ids}/g" select.sql
Para ver como S_ids
é gerado, você pode pegar cada parte do pipeline
cut -d'|' -f1 file.txt # Extract first column
tr '\n' ' ' # Convert newlines to spaces
sed -e 's/ *$//' # Strip the trailing space
sed -e "s/ /','/g" # Replace each remaining space with the three characters ','