Рабочая "конфетка устанавливает openssl-devel", кажется партией, легче, чем переключение на человечность.
Имел ту же проблему как OP. У меня был установленный openssl, но nginx мог найти его, когда compil, но указатель на libssl-devel помог мне
Один способ использовать sed
:
Содержание script.sed:
## Change line.
s/.*/('&','&')/
## Append it to hold space.
H
## In end of file substitute newlines with commas and print.
$ {
g
s/^\n//
s/\n/,/g
p
}
Команда:
sed -nf script.sed infile
Вывод:
('chair','chair'),('table','table'),('pen','pen'),('desk','desk')
Никакая потребность в подпроцессе, это может быть сделано в чистой оболочке удара:
var=$(while read line; do echo -n ",('$line','$line')"; done < file)
var=${var:1}
Обновление:
Если Вы хотите это как остроту, Вы могли:
var=$({ read line && echo -n "('$line','$line')" && while read line; do echo -n ",('$line','$line')"; done } < file)
Отметьте &&
работать echo
и while
только это файл непусто.
var=${var:1}
как 2-я команда для чередования 1-го символа. Я думаю, что легче продолжиться тот путь, чем управлять 1-й строкой по-другому, но я обновлю сообщение.
– jfg956
23.02.2012, 20:55
Вот чистый метод оболочки: считайте каждую строку и добавьте правильно массажировавшие данные к var
. Снимите изоляцию с дополнительной запятой.
var=
while IFS= read -r line; do
var="$var,('$line','$line')"
done <input_file
var=${var#,}
Вот простой метод с помощью внешних утилит: массаж каждая строка с sed
, затем превратите новые строки в запятые. Снимите изоляцию с дополнительной запятой.
var=$(<input_file sed "s/.*/('\1','\1')/" | tr "\n" ',')
var=${var%,}
Здесь решение не с awk
, но с sed
:
Чтобы сделать замену в ИМЕНИ ФАЙЛА, работать
sed ':a;N;$!ba;s/\n/,/g;s/\w*/(''&'',''&'')/g' -i FILENAME
Для получения дополнительной информации посмотрите этот вопрос.
$ sed ':a;N;$!ba;s/\n/,/g;s/\w*/(''&'',''&'')/g' -i csclm.txt sed: The label :a;N;$!ba;s/\n/,/g;s/\w*/(&,&)/g is greater than eight characters.
– munish
23.02.2012, 12:48
;
между командами sed.
– jofel
23.02.2012, 13:40
Очень сложный способ сделать это, работая только в оболочке удара (из-за замены процесса), но с помощью только простые команды:
var=$(sed -e "s/^/'/" -e "s/\$/'/" file |
paste -d "," - <(sed -e "s/^/'/" -e "s/\$/'/" file) |
sed -e "s/^/(/" -e "s/\$/)/" |
paste -s -d ",")