Я использовал бы ВЫХОДНОЙ пункт, существующий в SQL-СЕРВЕРЕ 2008 вперед...
Что-то как...
BEGIN TRANSACTION
DELETE [table] OUTPUT deleted.* WHERE [woof]
ROLLBACK TRANSACTION
ВСТАВЛЯЕТ, и ОБНОВЛЕНИЯ могут использовать 'вставленную' таблицу также. Статья MSDN касается всего этого.
РЕДАКТИРОВАНИЕ:
Это точно так же, как другие предложения ВЫБОРА тогда УДАЛЯЮТ в транзакции, за исключением того, что он на самом деле делает обоих вместе. Таким образом, Вы открываете транзакцию, удаляете/вставляете/обновляете с ВЫХОДНЫМ пунктом, и изменения внесены, ТАКЖЕ производя то, что было сделано. Тогда можно принять решение откатывать или фиксировать.
Эта строка должна решить эту проблему:
sed -e "s/\b\(.\)/\u\1/g"
Использование ] awk
:
awk '{for(i=1;i<=NF;i++){ $i=toupper(substr($i,1,1)) substr($i,2) }}1' file
Результатом будет:
Trouble Me
Gold Rush Brides
Используйте следующую команду sed для ввода первой буквы каждого слова с заглавной буквы.
echo -e "Trouble me \nGold rush brides" | sed -r 's/\<./\U&/g'
output
Trouble Me
Gold Rush Brides
Ключ -r
указывает sed
использовать расширенные регулярные выражения. Затем инструкции sed
сообщают ему « s искать и заменять» ( s
в начале) шаблон \ <.
с шаблоном \ U &
g локально, то есть все экземпляры в каждой строке (это модификатор g
в конце). Мы ищем шаблон \ <.
, который ищет границу слова ( \ <
), за которой следует любой символ (.
).Шаблон замены - \ U &
, где \ U
указывает sed
на сделать следующий текст в верхнем регистре и &
является синонимом \ 0
, что означает «все, что было найдено». В этом случае «все, что было сопоставлено» - это как раз то, что .
сопоставлено, поскольку границы слов не включаются в сопоставления (вместо этого они являются привязками ). Что .
соответствует только одному символу, поэтому это то, что написано в верхнем регистре.