-1

こんにちは、次のことを行う bash スクリプトを作成したいと思います。

2 つのテキスト ファイルがあります。1 つは adf.ly リンクで、もう 1 つは Recipie 名です。

各テキスト ファイルから各行を取得し、次のことを行うバッチ スクリプトを作成したい

<li><a href="**TEXT FILE 1 ADFLY URL line 1** ">**Recipie name line 1 of txt file**</a></li>

<li><a href="**TEXT FILE 1 ADFLY URL line 2** ">**Recipie name line 2 of txt file**</a></li>

ect ect を実行し、すべての結果を LINKS.txt という別のテキスト ファイルに保存します。

誰かが助けてくれるか、Linux bashスクリプトの方向性を教えてください

4

2 に答える 2

1

この 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
于 2013-04-14T17:10:15.067 に答える
0

これをやってみてください:

$ cat file1
aaaa
bbb
ccc

$ cat file2
111
222
333

$ paste file1 file2 | while read a b; do
    printf '<li><a href="file://%s">%s</a></li>\n' "$a" "$b"
done | tee newfile

出力

<li><a href="file://aaaa">111</a></li>
<li><a href="file://bbb">222</a></li>
<li><a href="file://ccc">333</a></li>
于 2013-04-14T17:06:08.750 に答える