Найти строки, состоящие из одного или нескольких слов, соединенных подчеркиванием - PullRequest
1 голос
/ 06 июня 2019

Вопрос: Напишите команду, которая показывает все уникальные строки. Строка состоит из одного или нескольких слов, соединенных подчеркиванием, причем слово состоит из одного или нескольких буквенных символов: lamp change, rise reason, mei, но не 15 mei или 2015 risetime.

файл csv, который я уже урезал, выглядит так (1 колонка):

lamp_change_10_augustus_2015_16_15_28_637

Мне нужна только часть "lamp_change" этой строки / столбца.

работает на терминале macOS. Я уже пытался использовать команду grep, но она показывает только все lamp_change, например, вместо одной. Я думаю, что мне нужно использовать регулярные выражения в сочетании с командой grep

CSV-файл выглядит так:

amp_change_06_augustus_2015_12_19_30_785
lamp_change_06_augustus_2015_12_19_30_989
lamp_change_06_augustus_2015_12_19_31_007
lamp_change_10_augustus_2015_16_15_27_451
lamp_change_10_augustus_2015_16_15_28_479
lamp_change_10_augustus_2015_16_15_28_637
lamp_change_10_augustus_2015_16_15_28_644
morning_backup_hour
morning_backup_minute
start_experiment
target_url
0009_02_juni_2015_adherence_importance

это то, что я пытался

$ grep -E  "([a-z]+_[a-z]+)" hue_string.csv|sort|uniq

это дало мне тот же ответ

$ sed -E 's/ \+/\n/' hue_string.csv 

результат этого кода такой же, как файл CSV. Он должен содержать все действия, такие как lamp_change, bedtime_tonight и т. Д. В списке.

1 Ответ

0 голосов
/ 07 июня 2019

Используйте переключатель -o (или --only-matching):

grep -ioE  "([a-z]+_[a-z]+)" hue_string.csv | sort -u

Выход:

adherence_importance
amp_change
lamp_change
morning_backup
start_experiment
target_url

Примечания: переключатель -i выполняет поискнечувствительные к регистру.sort -u проще, чем sort | uniq.Ответ выше предполагает, что вывод должен состоять из двух слов с _ в середине - это то, что находит код OP , но заголовок подразумевает нечто более инклюзивное ... в этом случае:

grep -ioE  "([a-z][a-z_]+[a-z])" foo|sort -u

Выходы:

adherence_importance
amp_change
augustus
juni
lamp_change
morning_backup_hour
morning_backup_minute
start_experiment
target_url
...