次のリストを含む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タグの間にフィールドを挿入します。