0

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

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

我已经完成了所有这些工作,但被困在最后一点。

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

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

一行:

"a variable string" 

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

我正在使用DOS。

如您所见,我对这一切都很陌生。如果我能完成这项工作,将来会为我节省大量时间,因此将不胜感激。目前我必须将一些 html 标头重新注入文本文件,在 html 编辑器中打开它,选择表格,然后将其粘贴到电子表格中,这有点痛苦。

PS有没有一种简单的方法可以让sed从给定的行中删除括号'('和')'?

4

2 回答 2

1

I doubt that this is what you really want, but it's what you asked for.

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

What you probably want to do is replace them when they appear consecutively. Here's how you might do that:

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

This will remove all parentheses in a file:

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

To select particular lines, you could do something like this:

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

which will only make the replacement if the word "foo" is somewhere on a line.

Edit: Changed single quotes to double quotes to accommodate GNUWin32 and CMD.EXE.

于 2010-09-17T01:30:57.773 回答
0

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

删除 ( 和 ) 的代码工作得很好,谢谢

你是对的 - 我希望将 3 行合并为一行,因此您给出的第二个示例看起来将接下来的两行读入模式空间看起来更有希望。然而,输出不是我所期望的。

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

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

1) 如果 < tr > 后跟 < td > 在下一行完全删除 < tr > 和 < td > 行[即不输出回车] 并在 NEXT 行粘贴一个 " 在该行的开头[此行末尾的回车无关紧要,因为稍后将对其进行编辑]

2)如果< /td >后面跟着< td >完全删除这两行[在这些行之后再次不输出回车]并在PREVIOUS行上输出一个“,[不输出回车]和on NEXT line stick"在行首[不用担心结尾的回车会在后面编辑]

3) 如果 < /td > 后跟 < /tr > 删除这两行,并在前一行添加一个 " at 到行尾和最后一个回车。

我已经给出了输入和期望输出的示例:

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

[想要的文件将在下一条消息中发布 - 此版块不允许新用户发布包含多个超链接的消息!]

还有一个额外的问题是地址列位于输入文件的多行上 - 通过查看 NEXT 行的第一个字符是否为“,可以将其减少为一行,如果不是,则不要输出当前行末尾的回车

呸,只是打出真正的代码是一场噩梦。但再次感谢您为实现这一目标所提供的所有帮助!:-)

于 2010-09-20T09:31:16.817 回答