Первые несколько символов Egrep в каждой строке?

как насчет этого? это правильно для вашего вопроса?

sed -r 's/m([^s])/MS\1/Ig' file
1
14.05.2017, 01:15
2 ответа

Есть много способов снять шкуру с этого кота.

С grep (grep -E и egrep также будут работать, но здесь работает базовый grep):

grep '^hghgh' /path/to/input

С sed:

sed -n '/^hghgh/p' /path/to/input
sed '/^hghgh/!d' /path/to/input

С awk:

awk '/^hghgh/' /path/to/input

Что является сокращением от:

awk '/^hghgh/ { print $0 }' /path/to/input

Или

awk 'index($0, "hghgh") == 1' /path/to/input

Или

awk 'substr($0, 1, 5) == "hghgh"' /path/to/input
0
27.01.2020, 23:19

Это сделало бы это:

grep '^hghgh' txt.txt

egrep — это просто grep -E (точно так же, как fgrep — это grep -F), но -E здесь не нужен, так как нам не нужно использовать расширенные регулярные выражения.

(Основное) регулярное выражение ^hghgh соответствует литеральной строке hghgh в начале строки. Это ^, который привязывает шаблон к началу строки.

Если вы хотите сопоставить exact строку hghgh в начале строки, а не, например. hghghaaaaaa (где hghgh — подстрока), затем используйте \> или \b или [[:>:] ] в конце выражения, чтобы соответствовать концу этого слова:

grep '^hghgh\>' txt.txt

Или используйте awk и выполните сравнение строк с первым полем:

awk '$1 == "hghgh"' txt.txt
4
27.01.2020, 23:19

Теги

Похожие вопросы