다음과 같은 목록이 포함된 CSV 파일이 있습니다.
URL,Domain,anchor
https://example1.com,Example1,Category1
다음과 같이 HTML로 다시 포맷해야 합니다.
<li><a href="https://example1.com" title="Category1"> Example1 </a></li>
나는 성공하지 못한 채 한동안 sed와 awk를 가지고 놀았습니다. 지금까지의 최선의 접근 방식은 첫 번째 문자열을 먼저 삽입한 https
다음 거기에서 수동으로 작업하는 것이었습니다. 그래서 이 작업을 수행하는 더 좋고 빠른 방법이 있는지 궁금합니다.
답변1
테스트 파일에 다음 줄을 추가했습니다 eg.csv
.
URL,Domain,anchor
https://example1.com,Example1,Category1
https://unix.stackexchange.com/questions/693322/reformatting-a-list-of-elements-using-bash-sed,This question,Here
그런 다음 다음 기본 AWK 스크립트를 작성했습니다.
#!/bin/bash
awk -F "," '
NR == 1 { next } # Ignore titles
{
printf( "<li><a href=\"%s\" title=\"%s\"> %s </a></li>\n",
$1, $3, $2 )
}
' <eg.csv
결과 :
$ ./fmt
<li><a href="https://example1.com" title="Category1"> Example1 </a></li>
<li><a href="https://unix.stackexchange.com/questions/693322/reformatting-a-list-of-elements-using-bash-sed" title="Here"> This question </a></li>
나는 그것이 당신의 요구를 충족시키기를 바랍니다.
답변2
그리고 sed
:
sed '1d;s@\(^[^,]*\),\([^,]*\),\(.*\)@<li><a href="\1" title="\3"> \2 </a></li>@' test
헤더 행( 1d
)을 제거하고 각 행을 각 쉼표로 분할하여 필드를 가져옵니다.
얻은 html 태그 사이에 필드를 삽입합니다.