![如何使用shell有条件地删除多余的字符?](https://linux22.com/image/180818/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8shell%E6%9C%89%E6%9D%A1%E4%BB%B6%E5%9C%B0%E5%88%A0%E9%99%A4%E5%A4%9A%E4%BD%99%E7%9A%84%E5%AD%97%E7%AC%A6%EF%BC%9F.png)
我不知道是否可以用简单的Unix命令来实现它。因为看起来有点复杂。
我有一个如下所示的文本。
<p id="mt">Iusto, numquam dolore aut voluptates delectus</p>
<p id="mt">Lorem ipsum dolor sit amet</p>
<p id="mt">Facere vitae sapiente necessitatibus</p>
<p id="mt">Tempora modi rem reprehenderit quam eos. Provident, animi ab ducimus dolorem</p>
每行字符长度不同,有些内容过长,需要省略多余部分。
例如,将<p id="mt">...</p>
内容限制为 20 个字符,如果超出则将其删除。看起来像这样。
<p id="mt">Iusto, numquam dolor</p>
<p id="mt">Lorem ipsum dolor si</p>
<p id="mt">Facere vitae sapient</p>
<p id="mt">Tempora modi rem rep</p>
答案1
使用sed
:
sed -E 's/^(<p id="mt">.{20}).*(<\/p>$)/\1\2/' infile
答案2
命令
awk -F ">" '{print $2}' filename| awk -F "<" '{print "<p id=\"mt\">"substr($1,1,20)"</p>"}'
输出
<p id="mt">Iusto, numquam dolor</p>
<p id="mt">Lorem ipsum dolor si</p>
<p id="mt">Facere vitae sapient</p>
<p id="mt">Tempora modi rem rep</p>
Python
m=open('filename','r')
for g in m:
e=g.split('>')[1].split('<')[0][0:20]
print "<p id=\"mt\"> {0}</p>".format(e)
输出
<p id="mt"> Iusto, numquam dolor</p>
<p id="mt"> Lorem ipsum dolor si</p>
<p id="mt"> Facere vitae sapient</p>
<p id="mt"> Tempora modi rem rep</p>