Bash 替换HTML中不匹配的左尖括号
我的问题是:如何找到带有不匹配左尖括号的行,并用它们的HTML等价物替换这些括号 输入示例:Bash 替换HTML中不匹配的左尖括号,bash,awk,sed,Bash,Awk,Sed,我的问题是:如何找到带有不匹配左尖括号的行,并用它们的HTML等价物替换这些括号 输入示例: <dd> Pro 10g Flüssigkeit: 2g Wasserstoffperoxid <10% Tenside. ENTHÄLT: Sulfamidsäure,</dd> Pro 10g Flüssigkeit:2g Wasserstoffperoxide这可能足够好了: $ sed -E 's/<([^>]+<)/\<
<dd>
Pro 10g Flüssigkeit: 2g Wasserstoffperoxid <10% Tenside. ENTHÄLT: Sulfamidsäure,</dd>
Pro 10g Flüssigkeit:2g Wasserstoffperoxide这可能足够好了:
$ sed -E 's/<([^>]+<)/\<\1/g' file
<dd>
Pro 10g Flüssigkeit: 2g Wasserstoffperoxid <10% Tenside. ENTHÄLT: Sulfamidsäure,</dd>
$sed-E的/]+这可能足够好了:
$ sed -E 's/<([^>]+<)/\<\1/g' file
<dd>
Pro 10g Flüssigkeit: 2g Wasserstoffperoxid <10% Tenside. ENTHÄLT: Sulfamidsäure,</dd>
$sed-E的/]+这是一个危险的建议,因为sed
是逐行工作的,对于每一行,都有几种情况需要考虑:
可能只有小于字符,没有任何html标记:
<p>
x < 10
</p>
x<10
在您的示例中,小于字符后面可能有一个html标记
<p> x < 10 </p>
x<10
小于字符可能位于html标记内
<img src="..." alt="Graph for x < 10">
它可能是一个很长的html标记,在后面的一行中关闭
<img
src="..."
alt="..."
>
我要做的是,首先假设只有前两个选项存在,然后使用如下方式:
sed -i.orig -r 's/<([^>]*($|<))/\<\1/g' file.
sed-i.orig-r's/]*($|这是一个危险的建议,因为sed
是逐行工作的,对于每一行,都有几个案例需要考虑:
可能只有小于字符,没有任何html标记:
<p>
x < 10
</p>
x<10
在您的示例中,小于字符后面可能有一个html标记
<p> x < 10 </p>
x<10
小于字符可能位于html标记内
<img src="..." alt="Graph for x < 10">
它可能是一个很长的html标记,在后面的一行中关闭
<img
src="..."
alt="..."
>
我要做的是,首先假设只有前两个选项存在,然后使用如下方式:
sed -i.orig -r 's/<([^>]*($|<))/\<\1/g' file.
sed-i.orig-r's/]*($|关于umlaute:我正在解析vcard(即普通ASCII文件),这时姓氏中一个看起来完全正常的'u'终止了我的awk脚本。我从未发现为什么会有数千个这样的vcard(其中许多包含umlaute和'ß',并且都来自同一来源)解析时没有任何问题,但这一个不起作用。因此…如果任何字符终止(或对awk脚本有任何其他不利影响),则您的awk脚本中存在一个简单的错误。否则不会发生这种情况。关于umlaute:我正在解析vCard(即普通ASCII文件)当一个姓氏中看起来完全正常的“ü”终止了我的awk脚本时。我一直不知道为什么成千上万的这些vCard(许多包含Umlaute和“ß”,并且都来自同一个源)被解析没有任何问题,但这一个不起作用。因此……如果有任何字符终止(或对其产生任何其他不利影响)你的awk脚本那么你的awk脚本中有一个简单的bug,否则就不会发生。