Сначала выведите все строки с помощью "
, а затем соедините строки запятой:
< file xargs -d '\n' printf '"%s"\n' | paste -sd,
Вместо новой строки вы можете просто удалить конечный (или начальную запятую):
< file xargs -d '\n' printf '"%s",' | sed 's/,$//'
< file xargs -d '\n' printf ',"%s"' | cut -c2-
< file xargs -d '\n' printf ', "%s"' | cut -c3- # with space after comma
С помощью sed добавьте "
и удерживайте строки, затем в последней строке замените символ новой строки запятой, удалите ведущую команду и напечатайте:
sed -n 's/^/"/;s/$/"/;H;${x;s/\n/, /g;s/^, //;p}' file
Вы были близки! " "
в вашей попытке добавляет пробел между строкой и "
. Вы можете:
awk '{print "\x22" $0 "\x22"}' | tr '\n' ',' |
# and then remove trailing comma:
sed 's/,$//'
Но объединить строки с помощью paste
проще, чем заменить символы новой строки запятой и удалить последнюю:
awk '{print "\x22" $0 "\x22"}' | paste -sd,