Я пытаюсь выполнить домашнюю работу, которая ограничена только использованием sed
для фильтрации входного файла в определенный формат вывода. Здесь входной файл (с именем stocks
):Как написать сценарий sed для grep-информации из текстового файла
Symbol;Name;Volume
================================================
BAC;Bank of America Corporation Com;238,059,612
CSCO;Cisco Systems, Inc.;28,159,455
INTC;Intel Corporation;22,501,784
MSFT;Microsoft Corporation;23,363,118
VZ;Verizon Communications Inc. Com;5,744,385
KO;Coca-Cola Company (The) Common;3,752,569
MMM;3M Company Common Stock;1,660,453
================================================
И выход должен быть:
BAC, CSCO, INTC, MSFT, VZ, KO, MMM
Я придумал решение, но это не эффективно. Вот мой sed
скрипт (названный try.sed
):
/.*;.*;[0-9].*/ { N
N
N
N
N
N
s/\(.*\);.*;.*\n\(.*\);.*;.*\n\(.*\);.*;.*\n\(.*\);.*;.*\n\(.*\);.*;.*\n\(.*\);.*;.*\n\(.*\);.*;.*/\1, \2, \3, \4, \5, \6, \7/gp
}
Команда, бегаю по оболочке:
$ sed -nf try.sed stocks
Мой вопрос, есть ли лучший способ использования СЭД, чтобы получить тот же результат ? Сценарий, который я написал, работает только с 7 строками данных. Если данные более длинные, мне нужно повторно модифицировать мой скрипт. Я не уверен, как я могу сделать это лучше, поэтому я прошу о помощи!
Спасибо за любые рекомендации.
+1 для допуска это домашнее задание, и для этого диком 's/\ (. * \); ....../'thingy вы положили туда! Удачи. – shellter