这是我内部网上的一个文件。我不记得我在哪里找到了方便的sed 单线。如果您搜索“sed one-liner”,您可能会找到一些东西
您是否曾经需要合并文本行,但手工操作太繁琐。
例如,假设我们有一个包含数百行的文本文件,如下所示:
14/04/2003,10:27:47,0
IdVg,3.000,-1.000,0.050,0.006
GmMax,0.011,0.975,0.005
IdVg,3.000,-1.000,0.050,0.006
GmMax,0.011,0.975,0.005
14/04/2003,10:30:51,600
IdVg,3.000,-1.000,0.050,0.006
GmMax,0.011,0.975,0.005
IdVg,3.000,-1.000,0.050,0.006
GmMax,0.010,0.975,0.005
14/04/2003,10:34:02,600
IdVg,3.000,-1.000,0.050,0.006
GmMax,0.011,0.975,0.005
IdVg,3.000,-1.000,0.050,0.006
GmMax,0.010,0.975,0.005
每个日期 (14/04/2003) 都是数据记录的开始,并在接下来的四行继续。
我们希望将其作为“逗号分隔值”文件输入 Excel,并在自己的行中查看每条记录。
在我们的例子中,我们需要将任何以 G 或 I 开头的行附加到前一行,并插入一个逗号,以便产生以下内容:
14/04/2003,10:27:47,0,IdVg,3.000,-1.000,0.050,0.006,GmMax,0.011,0.975,0.005,IdVg,3.000,...
14/04/2003,10:30:51,600,IdVg,3.000,-1.000,0.050,0.006,GmMax,0.011,0.975,0.0005,IdVg,3.000,...
14/04/2003,10:34:02,600,IdVg,3.000,-1.000,0.050,0.006,GmMax,0.011,0.975,0.0005,IdVg,3.000,...
这是“正则表达式”的经典应用,sed 再次发挥了作用。
编辑可以用一个 sed 命令完成:
sed -e :a -e '$!N;s/\n\([GI]\)/,\1/;ta' -e 'P;D' filename >newfilename
我没说这很明显,或者很容易,不是吗?
这是您在需要时在某处写下来以备不时之需的那种命令。