HTML 출력을 수정 중입니다.
<td nowrap align="right">4683</td>
문서에서 이 패턴의 모든 항목을 바꾸고 싶습니다. 여기서 4683은 주어진 수의 다양한 길이일 수 있습니다.
따라서 이 선은 다음과 같습니다.
<td nowrap align="right"><a href="4683.html">link</a></td>
이런 걸 찾고 있는 것 같아요
sed -i 's/align="right">/([0-9]*)/<\/td>/align="right"><a href="4683.html">link<\/a><\/td>/g' index.html
나는 정규식이 인용되거나 대체되거나 올바르게 구성되지 않을 수 있다는 것을 이해합니다.
답변1
어때요?
sed 's_^\([^>]\+>\)\([[:digit:]]\+\)_\1<a href="\2.html">link</a>_' file.txt
입력 에 있는 형식 이 아닌 대체 패턴 형식을 사용
_
하고 있습니다 .sed
/
/
^\([^>]\+>\)
가장 많은(포함) 문자를 찾아>
그룹에 넣습니다.\([[:digit:]]\+\)
언급된 번호를 찾아서 나중에 사용할 수 있도록 그룹에 넣습니다.교체 패턴은 첫 번째 일치 그룹이
\1<a href="\2.html">link</a>
어디에 있고 두 번째 일치 그룹이 어디에 있는지입니다.\1
\2
예:
$ sed 's_^\([^>]\+>\)\([[:digit:]]\+\)_\1<a href="\2.html">link</a>_'<<<'<td nowrap align="right">4683</td>' <td nowrap align="right"><a href="4683.html">link</a></td>
행의 다른 곳에 숫자가 없으면 간단히 다음을 사용할 수 있습니다.
sed 's_[[:digit:]]\+_<a href="&.html">link</a>_' file.txt
예:
$ sed 's_[[:digit:]]\+_<a href="&.html">link</a>_'<<<'<td nowrap align="right">4683</td>'
<td nowrap align="right"><a href="4683.html">link</a></td>
답변2
이 시도,
sed -ri 's/([0-9]+)/<a href=\"&.html\">link<\/a>/g' index.html