この awk ワンライナーは仕事をします:
awk 'BEGIN{l="<li><a href=\"%s\">%s</a></li>\n"}NR==FNR{a[NR]=$0;next}{printf l, a[FNR],$0}' file1 file2
より明確なバージョン (同じスクリプト):
awk 'BEGIN{l="<li><a href=\"%s\">%s</a></li>\n"}
NR==FNR{a[NR]=$0;next}
{printf l, a[FNR],$0}' file1 file2
例:
kent$ seq -f"%g from file1" 7 >file1
kent$ seq -f"%g from file2" 7 >file2
kent$ head file1 file2
==> file1 <==
1 from file1
2 from file1
3 from file1
4 from file1
5 from file1
6 from file1
7 from file1
==> file2 <==
1 from file2
2 from file2
3 from file2
4 from file2
5 from file2
6 from file2
7 from file2
kent$ awk 'BEGIN{l="<li><a href=\"%s\">%s</a></li>\n"};NR==FNR{a[NR]=$0;next}{printf l, a[FNR],$0}' file1 file2
<li><a href="1 from file1">1 from file2</a></li>
<li><a href="2 from file1">2 from file2</a></li>
<li><a href="3 from file1">3 from file2</a></li>
<li><a href="4 from file1">4 from file2</a></li>
<li><a href="5 from file1">5 from file2</a></li>
<li><a href="6 from file1">6 from file2</a></li>
<li><a href="7 from file1">7 from file2</a></li>
OPのコメントの編集:
ファイルが 1 つしかない場合: (foo
ここは単なるダミー テキストです)
awk 'BEGIN{l="<li><a href=\"%s\">foo</a></li>\n"}{printf l,$0}' file1
同じ file1 の例からの出力:
<li><a href="1 from file1">foo</a></li>
<li><a href="2 from file1">foo</a></li>
<li><a href="3 from file1">foo</a></li>
<li><a href="4 from file1">foo</a></li>
<li><a href="5 from file1">foo</a></li>
<li><a href="6 from file1">foo</a></li>
<li><a href="7 from file1">foo</a></li>
出力をファイルに保存する場合:
awk 'BEGIN{l="<li><a href=\"%s\">foo</a></li>\n"}{printf l,$0}' file1 > newfile