使用sed非常基本的替换

时间:2010-09-16 21:25:18

标签: sed substitution

真的很感激这方面的帮助。

我正在使用sed创建一个CSV文件。基本上多个html文件都合并到一个html文件中,然后sed用于删除所有垃圾图片等以获取原始柱状数据。

我已经完成了所有这些工作,但最后一点都停留了。

我想做的是非常基本的 - 我想替换以下几行:

"a variable string"
"end td"
"begin td"

只有一行:

"a variable string" 

(在此行的末尾有一个制表符)

我正在使用DOS。

如你所见,我对这一切都是新手。如果我能让这项工作在将来节省我很多时间,那么我将非常感谢你的帮助。 目前我必须将一些html标题注入文本文件,在html编辑器中打开它,选择表格,然后将其粘贴到一个有点痛苦的电子表格中。

P.S。有一种简单的方法可以让sed从给定的行中删除括号'('和')'吗?

2 个答案:

答案 0 :(得分:1)

我怀疑这是你真正想要的,但这就是你要求的。

sed "s/\"a variable string\"/&\t/; s/\"end td\"//; s/\"begin td\"//" inputfile

您可能想要做的是在它们连续出现时替换它们。以下是您可以这样做的方式:

sed "1{N;N}; /\"a variable string\"\n\"end td\"\n\"begin td\"/ s/\n.*$/\t/;ta;bb;:a;N;N;:b;$!P;N;D" inputfile

这将删除文件中的所有括号:

sed "s/[()]//g" inputfile

要选择特定的行,您可以执行以下操作:

sed "/foo/ s/[()]//g" inputfile

只有在单词“foo”出现在某个位置时才会进行替换。

修改:将单引号更改为双引号以容纳GNUWin32和CMD.EXE。

答案 1 :(得分:0)

我之前留下的评论似乎没有保存 - 所以会再试一次

删除(和)的代码非常感谢

你是对的 - 我正在寻找将3行合并为一行,所以你给出的第二个例子看起来就像读取模式空间中的下两行看起来更有希望。然而,输出并不是我所期望的。

我现在意识到代码将变得更加复杂,我不想再麻烦你了,因为我的手动方法是将一些html代码注入文本文件并在Openoffice中打开并粘贴到一个电子表格只需要几秒钟,我有一种感觉,手动生成sed编码,这将是一场噩梦。

基本上,转换html的规则需要是: [每个标签都已格式化,因此它显示在自己的行上] 我已经给出了输入文件和所需输出文件的示例,以供参考

1)如果< tr>之后是< td>在下一行完全删除< tr>和< td>线[即不要输出一个回车符]并在NEXT线上贴一个“在该行的开头[这个行末尾的回车并不重要,因为它将在以后编辑]

2)如果< / td>之后是< td>完全删除这两行[再次在这些行后不输出回车]并在PREVIOUS行输出“,[不输出回车]和在NEXT线棒上”在行的开头[don不用担心结束回车将在以后编辑]

3)如果< / td>之后是< / tr>删除这两行,并在上一行添加“at到行的末尾和最后一个回车。

我已经给出了输入和所需输出的示例:

输入:http://medinfo.redirectme.net/input.txt

[想要的文件将在下一条消息中发布 - 此主板不允许新用户发布带有多个超链接的消息!]

还有一个问题是地址列在输入文件的多行上 - 这可以通过查看NEXT行的第一个字符是否为“如果它不是那么做”减少到一行不输出当前行末尾的回车

P P是一个噩梦,只是为了打字而不介意实际的代码。但再次感谢你帮助我们做到这一点! : - )