Вы можете связать блок с первой проверкой и поместить туда вторую. Например:
sed -n '/male/ { /oxford/ p; }' file
Или инвертировать проверку и действие:
sed '/male/!d; /oxford/!d' file
Однако, поскольку (как @Jotne указует) строка, содержащая female
также содержит male
и вы, вероятно, не хотите, чтобы соответствовать их, образцы должны, по крайней мере, быть изменен, чтобы содержать границы слов:
sed -n '/\<male\>/ { /\<oxford\>/ p; }' file
sed '/\<male\>/!d; /\<oxford\>/!d' file
Но так как это выглядит, как данные, разделенные запятыми и чек, вероятно, п ВЗ хотел проверить, является ли кто-то пошел в male
университет, вероятно, было бы лучше использовать более строгую проверку с AWK:
awk -F, '$1 == "male" && $2 == "oxford"' file
Это проверяет не только если строка содержит male
и oxford
, но и, если они находятся в соответствующем поля. То же самое можно сделать, несколько менее красиво, с помощью sed
sed '/^male,oxford,/!d' file
Это касается и «женского». – Jotne
OP не говорит, что поле 1 и поле 2 содержит слово, точно так же, как получить строки с 'MALE AND OXFORD', но для его набора данных это должно быть нормально. – Jotne
Я представляю вещи о структуре данных, это правда, но если мой вывод верен, тестирование для полей - это более здравый тест на мой взгляд. – Wintermute