Я хочу отфильтровать две строки из вывода программы [закрыто]

У меня есть команда, которая выводит кучу данных, но мне нужны только две строки. Grep не работает, потому что строки, которые мне нужны, не находятся рядом друг с другом. Кажется, я не могу понять sed ...

Помогите, пожалуйста. :)

Пример вывода:

Schedule:
   blabla:
   blabla:
   blabla:
   blabla:   
   blabla:
   blabla:
   Something Level:
   blabla:   
   blabla:
   blabla:

Мне нужны эти строки:

Schedule:
   Something Level:

Этот вывод повторяется на разных серверах, но результат не тот. Поэтому мне нужно снова и снова искать образец из двух вещей.

1
задан 18 April 2013 в 20:50
2 ответа

Просто используйте параметры grep -v (инвертировать соответствие) и -E (расширенное регулярное выражение):

$ grep -vE "Schedule:|Something Level:" filename
1
ответ дан 3 December 2019 в 21:33

Любой из них будет работать, выберите свой любимый

grep 'Schedule:\|Something Level:'
grep -E 'Schedule:|Something Level:'

sed '/Schedule:\|Something Level:/!d'
sed -r '/Schedule:|Something Level:/!d'

sed -n '/Schedule:\|Something Level:/p'
sed -rn '/Schedule:|Something Level:/p'

awk '/Schedule:/ || /Something Level:/'
awk -F: '$1 == "Schedule" || $1 == "   Something Level"'

Будьте осторожны, сопоставляя пробелы в последнем.

1
ответ дан 3 December 2019 в 21:33

Теги

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