쉘을 사용하여 조건부로 추가 문자를 제거하는 방법은 무엇입니까?

쉘을 사용하여 조건부로 추가 문자를 제거하는 방법은 무엇입니까?

간단한 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>

관련 정보