LINUX.ORG.RU

Точное совпадение с grep -x

 


0

1

Нужно вернуть номер искомой строки из файла (необходимо совпадение всей строки).

Использую скрипт вида

#!/bin/bash

file="$1"
match="$2"

number=`cat -n "$file" | grep -x "$match" | awk '{print $1}'`
echo "$number"

При -x не возвращается ничего. Без -x возвращает нужное значение, но необходимо точное совпадение.

Deleted

А что ты передаешь в качестве второго параметра ы скрипт? Покажи всю команду запуска скрипта.

winlook38 ★★ ()

Нужно вернуть номер искомой строки из файла (необходимо совпадение всей строки).

grep -E «^pattern$»

man 7 regex

При -x не возвращается ничего. Без -x возвращает нужное значение, но необходимо точное совпадение.

дык у grep тоже есть ключ -n, как раз для данного случая.

drBatty ★★ ()
Ответ на: комментарий от drBatty

Раз использует pipe - должен понимать, что grep не сможет отличить добавок cat -n. Скорее всего просто не заметил.

// смешивать awk c grep - не comme il faut, можно было так: awk '/^...$/ { print NR }'

anonymous ()

По-моему, лучше так:

#!/bin/sh
EXPR="$1" ; shift
awk -v c="$EXPR" '$0 == c {print FNR; nextfile;}' $*

т.е. сначала скрипту передавать искомую строку, потом (необязательно) - имена файлов. В результате можно делать так:

script ЛОР ~/Desktop/*.html

berrywizard ★★★★★ ()

необходимо точное совпадение

fgrep

schizoid ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.