grep (или sed? ):пропустить указанное количество строк перед поиском совпадений

<Location>оказывается так. Это похоже на <Directory>, но вы указываете URL-адрес, а не путь к файловой системе, поэтому /cgi -bin/particularScript — это то, что нужно использовать.

По моему опыту, файл norobots.txt игнорируется, если Google находит вашу страницу через закладки в чьем-либо аккаунте Google. Он решает просканировать его, несмотря ни на что. Я знаю, как это было найдено, потому что нет общедоступных ссылок на рассматриваемую страницу; это был частный URL-адрес, и Google не посещал его до тех пор, пока кто-то не добавил его в закладки.

2
14.06.2021, 17:05
2 ответа

Разобрался во время написания Q, публикуя для потомков:

tail -n+N file | grep...

где N — количество пропускаемых строк минус 1.

3
28.07.2021, 11:25

sedможно использовать для пропуска начального количества строк. Команда

sed '1,200d'

удалит первые 200 строк и передаст все остальные строки без изменений.

Таким же образом можно использовать awk:

awk 'FNR > 200'

Приведенная выше команда напечатает строку 201 и далее, но отбросит более ранние строки. Переменная FNR— это количество записей (строк по умолчанию ), считанных из текущего файла.

Вы можете легко параметризовать это, чтобы получить число из командной строки:

awk -v n=200 'FNR > n'

Вы также можете объединить его с grep(, заменив функцию grepна awk):

.
awk -v n=200 'FNR > n && /pattern/' somefile

... где pattern— некоторое расширенное регулярное выражение.

Или, чтобы взять образец из некоторого значения в командной строке,

awk -v n=200 -v p='pattern' 'FNR > n && $0 ~ p'

или, что безопаснее, с помощью переменной окружения,

pattern='pattern' awk -v n=200 'FNR > n && $0 ~ ENVIRON["pattern"]' somefile
1
28.07.2021, 11:25

Теги

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