Хто-небудь, будь ласка, скажіть мені, що роблять ці дві команди?
sed -i "s!{[^{]*;}! !" file.txt
sed -i "s!{[^{]*{! !" file.txt
Я знайшов цей приклад, і я не можу з’ясувати результат, наданий під час запуску коду.
Відповіді:
0 для відповіді № 1sed -i "s!{[^{]*;}! !" file.txt
- sed -i означає на місці, file.txt може бути змінено.
- "s! ....! ....команда "Замінити", розділити на знак оклику. Найчастіше ви побачите використовувані косої риси, але sed приймає різні символи, визначені першим, слідом за s. Зауважте, що знаки оклику створюють проблеми в оболонці. Оскільки косої риски немає, ні в шаблоні, ні в заміні, я не бачу причин використовувати їх.
- {[^ {] *;} шаблон, який відповідає
- "" заміна, врешті-решт, порожня, якщо вона буде перенесена обережно, але це може бути вкладка або фанки напівпробілів або щось інше теж.
Тепер, який складний вираз:
- {[^ {] *;} буквальна пара фігурних дужок, що містять ...
- [^ {] група заперечення, заперечення спочатку символом є "^", тому все, що не є відкриттям, фігурною дужкою, а потім
- кількісний показник *, що означає будь-яке число, включаючи 0, за яким слід
- backspace, який, як і часто, є інструментом маскування.
- і крапка з комою.
Так
- "{aaaaa;}" має відповідати
- "{a;}" має відповідати
- "{;}" має збігатися
- "{};}" має відповідати
- "{{;}" не повинен збігатися
- "{a}" не повинен збігатися
- "{a}" не повинен збігатися