Я был через sed лайнерами, но все еще испытываю затруднения из-за моей цели. Я хочу к substitue соответствующим строкам на всех кроме первого вхождения строки. Мое точное использование было бы:
$ echo 'cd /Users/joeuser/bump bonding/initial trials' | sed <
cd /Users/joeuser/bump\ bonding/initial\ trials
Строка заменила пространство в bump bonding
с пространством наклонной черты bump\ bonding
так, чтобы я мог выполнить эту строку (так как, когда пробелов не оставляют, я не был бы в состоянии к CD к ней).
Обновление: Я решил это, просто используя одинарные кавычки и вывод
cd 'blah blah/thing/another space/'
и затем использование source
выполнить команду. Но это не отвечало на мой вопрос. Мне все еще любопытно, хотя..., как Вы использовали бы sed
зафиксировать его?
Вы можете избежать проблемы с G
и N
заменить все они, затем отсоедините первый:
sed -e 's/ /\\ /g' -e 's/\\ / /1'
вот еще один метод, который использует Команда T
филиала - если заставленная команда:
sed ':a;s/\([^ ]* .*[^\\]\) \(.*\)/\1\\ \2/;ta'
, которая имеет преимущество в том, что оставляют существующие последовательности космических космосов обратной ячейки в Intact.
Вид. Учитывая класс A:
A a;
...
a = A();
последний оператор не является инициализацией, это назначение, но он, вероятно, делает то, что вы хотите.
-121--983330-Краткий ответ:
Нет. Если часть предполагаемого поведения объекта должна быть инициализирована несколько раз, то наилучшим путем для реализации этого является доступный метод инициализации. Конструктор класса может просто отложить этот метод.
class C1 {
public:
C1(int p1, int p2) {
Init(p1,p2);
}
void Init(int p1, int p2) { ... }
};
Уголок Nitpicker:
Существует ли какой-то невероятно злой способ вызова конструктора в C++ после создания объекта? Почти наверняка это С++ в конце концов. Но это в корне зло и его поведение почти наверняка не определено стандартом и его следует избегать.
-121--983334-s/ /\\ /2g
В 2
указано, что должен применяться второй, а в g
указано, что должны применяться и все остальные. (Вероятно, это работает только на GNU sed. Согласно базовой спецификации Open Group Base Specification, " Если указаны как g , так и n , результаты не указаны. ")
Mootools не приходит с инструментом сериализации формы; Я знаю, что сосет.
Тем не менее, я успешно использовал эту автономную реализацию: Form2obj .
-121--2757004-Использование awk
$ echo cd 'blah blah/thing/another space/' | awk '{for(i=2;i<NF;i++) $i=$i"\\"}1'
cd blah\ blah/thing/another\ space/
$ echo 'cd /Users/joeuser/bump bonding/initial trials' | awk '{for(i=2;i<NF;i++) $i=$i"\\"}1'
cd /Users/joeuser/bump\ bonding/initial\ trials