私のハードドライブにウェブサイトがあり、HTMLファイルでキーワードを見つけて、見つかった各コンテンツを新しい行に一覧表示するHTMLファイルとして出力する必要があります。現在、以下の行を使用していますが、出力は理想的ではありません。
grep -lUirn -C 1 "Word1" * >> report.html
上記の行は以下を生成します。
file1.html file2.html etc.html
ただし、ファイルに出力するには必要です。
file1.html
file2.html
etc.html
より理想的には、次のように出力されます。
http://relitivePath/file1.html
http://relitivePath/file2.html
http://relitivePath/etc.html
答え1
GNUを使用する場合、オプション(すべてのファイルをバイナリとして扱う)は、MS-DOSまたはWindowsで実行されていない限り効果がなく、(一致する行の行番号を出力する)は(一致するgrep
行の名前のみを出力)と組み合わせても効果はありません。ファイル)))。同様に(一致の周りの1行のコンテキスト)は効果がありません。-U
-n
-l
-C 1
-l
一致するファイルはすでに別々の行に報告されていますが、なぜ1行に入れたのかはよくわかりません。
grep -lr -Fiw 'Word1' .
あなたの要件を満たす必要があります。-F
正規表現一致ではなく文字列比較を実行し、部分-w
文字列の代わりに完全な単語一致を追加しました。
出力をURIに変換するには:
grep -lr -Fiw 'Word1' . | sed 's,^,http://,'
これは、http://
各行の先頭に挿入を使用しますsed
。
これは明らかに、ファイル名に改行文字が含まれていないと仮定しています。これにより、sed
ファイル名の改行で区切られた各部分の前に文字列が挿入されます。