Два простых правила:
\C
выходит из следующего символа, независимо от того, что это кроме новой строки.'text'
выйдите из любого символа между ними, включая обратную косую черту, но не включая одинарную кавычку (так как он отмечает конец заключенного в кавычки текста).Таким образом:
grep -P '<html>' myfile
grep -P \<html\> myfile
grep -P '(?<!<)html' myfile
grep -P \(\?\<\!\<\) myfile
Если необходимо передать аргумент, который содержит одинарные кавычки, можно использовать '\''
“выйти” из одинарной кавычки в одинарных кавычках. Технически, то, что это делает, закончить первый буквенный текст, затем поместите литерал '
в том же слове, затем более буквенный текст все еще в том же слове.
grep '^D'\''oh!' myfile
Остальная часть (полученных в итоге) правил заключения в кавычки:
!"#$&'()*;<>?[\]^`{|}~
(другими словами, следующие символы безопасны: буквы, цифры, %+,-./:=@_
и символы неASCII)."$\`
и (в оболочках с включенной историей) !
. Обратная косая черта между двойными кавычками появится в строке, если она не будет предшествовать одному из небуквенных символов.Эти правила для удара и других оболочек стиля Границы (таких как пепел и ksh). Они относятся к zsh также (за исключением того, что =
после того, как пробелу, возможно, понадобится заключение в кавычки). Правила в csh/tcsh и у Рыбы отличаются.
Это очень просто с awk
(благодаря @glenn jackman):
awk '/Sequence: n/ { $2 = NR } { print }' input-file
Относительно sed
, Я только смог сделать это с разработкой с двумя передачами (протестированный с GNU sed
и с ssed
:):
sed '/^Sequence: n$/{s/n$//p;=;d;}' | sed '/^Sequence: $/{N;s/\n//;}'
Первые вставки номер строки в строке после "Последовательности": вторые соединения эти две строки.
awk '/Sequence: n/ {$2 = NR} {print}'
– glenn jackman 26.08.2011, 00:22