我只是环顾四周,但我找不到任何对我有用的东西。 我想在其他行的顶部插入一个新行(基本上是一个html表行)。
<table id="tfhover" class="tftable" border="1">
<tr><th>HEADER1</th><th>HEADER2</th><th>HEADER3</th><th>HEADER4</th></tr>
<tr><td>Row:1 Cell:1</td><td>Row:1 Cell:2</td><td>Row:1 Cell:3</td><td>Row:1 Cell:4</td></tr>
</table>
那么,是否有人可以向我推荐一个将插入新内容的sed cmd:
<tr><td>Row:1 Cell:1</td><td>Row:1 Cell:2</td><td>Row:1 Cell:3</td><td>Row:1 Cell:4</td>
就在HEADERS的下方?
谢谢!
答案 0 :(得分:7)
首先,我们有一个包含以下行的文件,名为datafile.txt
1 some test lines here
but not all lines contain nubers
3 and here is the last one
我们有一个bash变量$ADDED
,其中包含想要添加的行内容
ADDED="==This is the new line=="
ADDED="==This is the new line=="
< datafile.txt sed "1a \\
$ADDED
"
结果:
1 some test lines here
==This is the new line==
but not all lines contain nubers
3 and here is the last line
< datafile.txt sed "/^[0-9]/a \\
$ADDED
"
结果:
1 some test lines here
==This is the new line==
but not all lines contain nubers
3 and here is the last line
==This is the new line==
< datafile.txt sed "1i \\
$ADDED
"
结果
==This is the new line==
1 some test lines here
but not all lines contain nubers
3 and here is the last line
< datafile.txt sed "/all/s/$/\\
$ADDED/"
上面的示例在行之后添加行,其中包含替换
的单词“all”1 some test lines here
but not all lines contain nubers
==This is the new line==
3 and here is the last line
< datafile.txt sed "/all/s/\(.*lines \)\(.*\)/\1\\
$ADDED\\
\2/"
上面将搜索包含单词“all”的行,并在单词“lines”之后将其拆分。结果:
1 some test lines here
but not all lines
==This is the new line==
contain nubers
3 and here is the last line
最后一件事。使用regural表达式解析 HTML是不可能的,请查看sputnik评论中的链接。
但是,这并不意味着匹配 HTML文件的某些部分。如果你知道你想要什么匹配(而不是解析) - 你也可以安全地使用HTML的正则表达式。简单地说,这里的许多人都不知道解析和匹配之间的区别。
因此,如果您的html文件具有众所周知的结构,例如你确定比你的html一直都是上面的结构,你可以安全地写:
<your_file.html sed "/^<tr><th>/a \\
<tr><td>new Row:1 Cell:1</td><td>Row:1 Cell:2</td><td>Row:1 Cell:3</td><td>Row:1 Cell:4</td>
"
你会得到
<table id="tfhover" class="tftable" border="1">
<tr><th>HEADER1</th><th>HEADER2</th><th>HEADER3</th><th>HEADER4</th></tr>
<tr><td>new Row:1 Cell:1</td><td>Row:1 Cell:2</td><td>Row:1 Cell:3</td><td>Row:1 Cell:4</td>
<tr><td>Row:1 Cell:1</td><td>Row:1 Cell:2</td><td>Row:1 Cell:3</td><td>Row:1 Cell:4</td></tr>
</table>
仅仅因为我们 NOT PARSING html代码,我们只是 MATCHING 一些线条模式..