Возвращает следующие 50 символов после того, как строка найдена в файле.

Прежде всего, предполагая, что строки cleaned1должны совпадать со всей строкой в ​​cleanedR, вы можете извлечь выгоду из использования grep -x.

С таким же предположением, если вам удастся отсортировать два огромных файла cleaned1и cleanedR, вы можете заменить grepна comm -1 -3 cleaned1 cleanedR, что будет довольно быстро.

В противном случае вы можете разделить cleaned1(, например.split -l 100000)и оперировать порциями. Вы даже можете связать эти greps (, т.е. grep -Fvxf chunk1 cleanedR | grep -Fvxf chunk2 |... > cleaned2), и, таким образом, распараллелить несколько процессоров.

-1
09.04.2019, 12:49
2 ответа

Я не знаю, лучше ли парсить html так, как вы пытаетесь, но в любом случае это работает, если у вас есть разрывы строк, если их нет, вы можете удалить часть tr:

cat yourFile.html | tr -d '\n' | awk -F'<td id="latest_button">' '{print $2}' | cut -c -50

Таким образом, tr избавится от разрывов строк, чтобы рассматривать все как одну строку строки.

awk -F устанавливает разделитель в тег, печатает $2, печатает часть после разделителя

и cut -c -50 печатает только первые 50 символов

0
28.04.2021, 23:34

Я обычно использую grep -o для этого:

grep -o '<td id="latest_button">..................................................'

Или в расширенном режиме:

grep -E -o '<td id="latest_button">.{50}'

Конечно, вы также получаете сам тег.

1
28.04.2021, 23:34

Теги

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