В любом случае мы можем изменить разделитель, который использует grep?
Я думаю, по умолчанию, grep использует \n
в качестве разделителя.
linux
shell-script
grep
StudioHack
источник
источник
$/
) и awk (RS
). Или вы могли бы сделать что-то вродеecho "$var" | sed 's/<delimiter>/\n/' | grep <pattern>
. Много много ответов, в зависимости от того, какова ваша настоящая проблема.Ответы:
Если вы заботитесь только о выводе,
tr
может работать на вас:источник
echo $my_var | tr @ '\n' | grep blahblah
$my var
для сохранения белого-пространства и новой строки, то естьecho "$my_var" | ...
.agrep
из Университета Аризоны позволяет установить разделитель. Это не замена замены для grep; он использует другой алгоритм (приблизительный grep, может соответствовать ошибкам) и имеет другой синтаксис шаблона. Но это удобный инструмент.К сожалению, я думаю, что из-за проблем с лицензированием было названо несколько похожих проектов
agrep
, и они не все совместимы. Но я думаю, что все версии позволяют установить разделитель.источник
источник
d="${1}"
а не простоd="$1"
? (2) Вам нужно расширить свое предупреждение: если это используется с несколькими файлами, у вас также есть проблема, если любое из имен файлов содержит `@ '. (3) (Nit pick) Настоящая замена / эмулятор grep также будет работать с нулевыми аргументами файла.Замените разделитель нуля ('@') новой строкой (\ n) перед grep:
источник
Как это ? Любое использование?
Установите «@» в соответствии с вашими потребностями.
источник