我一直在尝试通过sed命令并且未成功。
这是我正在尝试使用的sed命令;
a unknown command: <
我不断得到$VAR
......我知道为什么但是没有运气。单引号是可以的,但不显示sed
值,只显示文字字符串。
对于不熟悉i
的读者,这是一个正则表达式后跟"s%<Testing>%$VAR%"
命令,而不是i
替换的错误错误类型。 </Testing>
命令在匹配行之前插入一个字符串。换句话说,当输入与 <asp:GridView ID="TestGrid" runat="server" AllowPaging="true" SkinID="GridViewNew" AllowSorting="False"
OnRowDataBound="GridViewTest_RowDataBound" EnableViewState="True"
OnRowUpdating="GridViewTest_OnRowUpdating" OnRowEditing="GridViewTest_OnRowEditing" OnRowCancelingEdit="GridViewTest_OnRowCancelingEdit"
AutoGenerateColumns="False">
<Columns>
<asp:CommandField ShowEditButton="True" CausesValidation="False" />
<asp:BoundField DataField="Client" HeaderText="Client" InsertVisible="False" ReadOnly="True" />
<asp:BoundField DataField="Stock" HeaderText="Stock" InsertVisible="False" ReadOnly="True" />
<asp:TemplateField HeaderText="DutyStatus" InsertVisible="False" >
<ItemTemplate>
<asp:Label ID="standLbl" runat="server"><%#Eval("DutyStatus").ToString().Trim() %></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DdlDutyStatus" runat="server"
DataTextField="DutyStatus"
DataValueField="DutyStatus">
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Percentage" InsertVisible="False" SortExpression="enhanced">
<ItemTemplate>
<asp:Label ID="enhLbl" runat="server"><%#Eval("percentage").ToString().Trim() %></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TbPercentage" runat="server" Text='<%#Eval("percentage").ToString().Trim()%>' class="edit-field"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
匹配时,我想添加一个描述匹配行之前的测试用例的片段。
答案 0 :(得分:1)
如果$VAR
包含换行符,则需要反斜杠 - 转义它。
vnix$ VAR=$'<hello>\n</hello>'
vnix$ sed "/<\/Testing>/i '<Tester>$VAR</Tester>'" <<<$'<Testing>\nmoo</Testing>\n(end)'
sed: -e expression #1, char 33: unknown command: `<'
vnix$ VAR=$'<hello>\\\n</hello>'
vnix$ sed "/<\/Testing>/i '<Tester>$VAR</Tester>'" <<<$'<Testing>\nmoo</Testing>\n(end)'
<Testing>
'<Tester><hello>
</hello></Tester>'
moo</Testing>
(end)
(我也猜测你实际上并不想要替换值附近的单引号,但这显然很容易修复。)
答案 1 :(得分:-2)
您需要指定某些命令,例如&#34; s&#34; (开头):
sed -i "s/</Testing>/i '$VAR'" filename
此外,如果您显示示例输入和输出
会更好