Получить строки из разделенного файла на основе алфавитного диапазона

tail -f пытается использовать механизм уведомления об изменении файла ( inotify ). SSHFS, как и любая другая файловая система FUSE , не поддерживает этот механизм. Обычно tail должен обнаруживать это самостоятельно. Если это не сработает, вы можете использовать недокументированную опцию --- disable-inotify (начиная с трех тире, потому что это недокументированная опция), чтобы принудительно использовать режим опроса, который работает в любой файловой системе.

tail ---disable-inotify -n 500 -f my_text_file

1
23.10.2017, 18:19
3 ответа

Решение sed .

Удаление строк перед первой в диапазоне:

cat file | sed '/abcd/Q'

Удаление строк после последней в диапазоне:

cat file | sed -n '/abcf/,$p'

   -n : don't print non-matches
  ,$ : first match to end of file
   p  : print

Сборка:

cat file | sed '/abcd/Q | sed -n '/abcf/,$p'

Шаблоны будут соответствовать любому полю в строке, поэтому вам потребуется лучший шаблон, чтобы он соответствовал только второму полю:

cat file | sed -r -n '/^[^\|]+\|abcd/,$p' | sed -r '/^[^\|]+\|abce/Q'

Самый простой диапазон с использованием sed::

cat file | sed -n '/abc[def]/p'
0
27.01.2020, 23:24

записывает в диапазоне abcd -abcf с использованиемgrep:

grep -E '^[^\|]+\|abc[d-f]\|'
0
27.01.2020, 23:24

Все -в -одно sedрешение, запись диапазона от abcdдо abcfв файл с именем other, а остальные строки передаются на стандартный вывод. Таким образом, вам не придется просматривать файл дважды.

sed -e '/|abcd|/,/|abcf|/{wother' -e 'd;}'
0
27.01.2020, 23:24

Теги

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