【发布时间】:2012-02-03 18:35:35
【问题描述】:
我正在尝试完成仅限于使用sed 将输入文件过滤为某种输出格式的作业。这是输入文件(名为stocks):
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
}
我在 shell 上运行的命令是:
$ sed -nf try.sed stocks
我的问题是,有没有更好的方法使用 sed 来获得相同的结果?我编写的脚本仅适用于 7 行数据。如果数据较长,我需要重新修改我的脚本。我不知道如何才能让它变得更好,所以我在这里寻求帮助!
感谢您的任何建议。
【问题讨论】:
-
+1 承认这是家庭作业,以及你放在那里的那个疯狂的
s/\(.*\);....../东西!祝你好运。