我正在尝试在特定行之后附加一个html代码块(在Shell变量中)。 例如:-
name="john"
link="www.test.com"
jobname="testjob"
data="<tr>
<td>$name</td>
<td><a href=$link>$link</a></td>
<td>$jobname</td>
<td>Running: <progress value="22" max="100">
</progress>
</td>
<td>Running: <progress value="22" max="100">
</progress>
</td>
<tr>"
sed '/\<tbody\>/a \\$data' filename
文件名包含:-
<html>
<tbody>
我需要在文件名中的行后附加Shall Variable内容。 感谢响应。
答案 0 :(得分:1)
如果您可以将$data
而不是shell变量存储在文件中(可以使用临时文件),则可以使用r filename
来读取和插入内容:
echo $data > temp.html
sed "/<tbody>/ r temp.html" filename
有关更多详细信息,请参见sed command list和less frequently used commands。
答案 1 :(得分:0)
sed用于s / old / new /,仅此而已(例如,请参见Is it possible to escape regex metacharacters reliably with sed,以获取有关sed试图将字符串视为字符串的恐惧),并且您需要修正引号和转义。试试这个(未试用):
name='john'
link='www.test.com'
jobname='testjob'
data='<tr>
<td>'"$name"'</td>
<td><a href='"$link"'>'"$link"'</a></td>
<td>'"$jobname"'</td>
<td>Running: <progress value="22" max="100">
</progress>
</td>
<td>Running: <progress value="22" max="100">
</progress>
</td>
<tr>'
awk '
BEGIN {
data = ARGV[2]
ARGV[2] = ""
ARGC--
}
{ print }
/<tbody>/ { print data }
' file "$data"