Хотите удалить определенные записи с помощью sed

Если вы не поместите:MAILTO=""в заголовок crontab, у вас должно быть (если ваш компьютер работал )почта для пользователя @ при каждом запуске скрипта.

0
19.03.2021, 10:15
2 ответа

Вы можете использоватьawk:

awk '
NR == FNR && /tag1,slate1,flag1,status0/{last_matching=FNR}
NR != FNR && FNR<last_matching && /tag1,slate1,flag1/{next}
NR != FNR
' list.txt list.txt

awkдважды читает файл.

  • При первом запуске(NR == FNR)...
    • сохраняем последнее совпадениеFNR(= номер записи/строки файла )в переменной.
  • Во второй раз(NR != FNR)...
    • мы пропустим все совпадающие строки (-->/tag1,slate1,flag1/{next})
    • , но только доlast_matching(-->FNR<last_matching).
    • и напечатайте все оставшиеся строки с помощью NR != FNR.
0
28.04.2021, 22:59

Используя sed утилиту редактора потока, мы можем сделать следующее:

sed -ne ':top
/^tag1,slate1,flag1,status0,0,1$/!{
  /^tag1,slate1,flag1,/!p;n
  btop
}
:n;p;n;bn
' list.txt
  • Пока мы не увидим целевую строку, мы продолжаем печатать несовпадающие строки.
  • Как только целевая строка будет достигнута, мы продолжаем печатать все строки до тех пор, пока файл не будет исчерпан.
0
28.04.2021, 22:59

Теги

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