2016-02-10 3 views
-1

У меня есть вкладки разделенных текстовый файл, который имеет 4 колонки данных:Извлечение один столбец текстового файла в другой, когда шаблон сопоставляется

StudentId  Student Name  GPA  Major 

Я должен написать команду оболочки, которая будет хранит имена студентов, которые являются специалистами CS в другом файле. Я использовал grep cs students.txt, который работает, чтобы отображать только учеников, которые являются cs, но я не знаю, как затем взять только имена учеников и сохранить их в файл.

+1

Вы имеете в виду только колонку с именами? Как выглядят ваши исходные данные? Разделенная вкладка? Пространство разделено? Вам нужна строка заголовка? Вы можете отредактировать свой вопрос. –

+0

Прошу прощения за плохое форматирование. Спасибо, что сделали это для меня! У меня действительно есть другой вопрос (все разнесено на вкладки), но как мне отображать только учеников, чей идентификатор не начинается с 4? –

+0

Для моего ответа вы можете сделать выражение awk ''($ 4 ==" cs "&& $ 1 ~/^ [^ 4] /) {print $ 2}'', чтобы добавить это ограничение. –

ответ

0

Понял:

grep cs students.txt | cut -f2 >file1 
+1

Это соответствует 'cs' даже в неправильном столбце, т.е. как часть имени. –

+0

Я знаю, но это просто простое задание. Я думаю, что мы должны игнорировать, если бы ученик мог включить cs в свое имя. –

+1

Надеюсь, что ваш профессор будет больше заботиться о правильности, но, ну, предположим, что они сделают это, выйдя в классификацию. –

1

Если предположить, что ваш входной файл разделенные табуляцией (так что вы можете иметь пробелы в именах):

awk -F'\t' '$4 == "cs" { print $2 }' <infile >outfile 

Это соответствует колонке 4 (основной) против «сСт »и печатает столбец 2, когда он является точным совпадением.

Смежные вопросы