因此,首先,我们有一个包含以下行的文件,称为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
最后一件事。用正则表达式解析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>
仅仅因为我们没有解析html 代码,我们只匹配了一些行模式..