Як вийти <або> в параметр в оболонці?


10

Я хотів би використовувати grepз виразом PCRE, який містить <символ. Баш думає, що хочу переадресувати, але цього не хочу. Як я можу втекти <?

Відповіді:


11

Я зміг це зробити за допомогою нахилу:

25 % grep \< xmospos.c
#include        <stdio.h>
#include        <stdlib.h>
#include        <getopt.h>
#include        <X11/Xlib.h>

Цитований менше, ніж і цитований, зазнав відхилення менше, ніж обидва дали тугі відповіді.


5
Так, або помістіть його в одиночні цитати
glenn jackman

Мені все-таки потрібно навчитися, наприклад, як саме це працює з втечею: grep -oP '(?< )(.*)$'не працює, наприклад, з цитатами. Спробував це спочатку.
хакре

@hakre Здається, що у вашому регулярному вираженні є помилка синтаксису. Ви мали на увазі (?<! )(.*)$або (?<= )(.*)$?
Жил "ТАК - перестань бути злим"

4

Два простих правила:

  • Зворотна косою рисою \Cзалишається наступним символом, окрім нового рядка.
  • Одиночні цитати 'text'уникають будь-якого символу між ними, включаючи зворотну косу рису, але не включаючи єдину цитату (оскільки вона означає кінець цитованого тексту).

Таким чином:

grep -P '<html>' myfile
grep -P \<html\> myfile
grep -P '(?<!<)html' myfile
grep -P \(\?\<\!\<\) myfile

Якщо вам потрібно передати аргумент, що містить одиничні лапки, ви можете використати '\''для "втечі" одну цитату всередині однієї лапки. Технічно те, що це робиться - це закінчити перший буквальний текст, потім поставити буквар 'в те саме слово, потім більш буквальний текст все-таки в одному слові.

grep '^D'\''oh!' myfile

Решта правил цитування (узагальнено):

  • Потрібно цитувати наступні символи принаймні деякі рази: пробіл та !"#$&'()*;<>?[\]^`{|}~(іншими словами, безпечні такі символи: літери, цифри %+,-./:=@_та символи , що не належать до ASCII).
  • Між подвійними лапками всі символи використовуються буквально за винятком "$\`і (в оболонках з увімкненою історією) !. Зворотний проріз між подвійними лапками з’явиться в рядку, якщо він не передує одному з нелітеральних символів.

Ці правила призначені для башмаків та інших снарядів у стилі Борна (таких як зола та кш). Вони застосовуються і до zsh (за винятком того, що =після пробілів може знадобитися цитування). Правила в csh / tcsh та в Fish різні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.