0

bashを使用していくつかのXMLファイルに特定の行を印刷する方法を理解しようとしています。これらのファイルはいくつかのフォルダにあります。印刷する必要のある行は、と呼ばれる正確なXMLタグ <name></name>です。

私の目的:

  • フォルダを検索
  • フォルダの場所を1行に印刷
  • 2行目にファイル名を出力します
  • 間にあるものを印刷する

必要なのは名前だけで、フルパスは必要ありません。また、whateverという名前の.txtファイルに追加する必要があります。私はbashで試しましたが、Imはこれに固執しました。

編集:これは他のシェルスクリプトに追加されている部分であるため、grepをその中で動作させることができるかどうかもわかりません。

4

2 に答える 2

2

を扱う場合、より良いアプローチは、またはXMLのような実際のツールを使用することです。xmllintxmlstarlet

例:

find /path -iname '*xml' -exec xmllint --xpath '//name/text()' {} +

それは再帰的にトリックを行います。

于 2012-10-31T04:48:24.307 に答える
1

ディレクトリでgrepと正規表現を再帰的に使用すると、タグが含まれるファイル名(パスを含む)が表示されます。

grep -r "<name>.*</name>" /path/to/directory
于 2012-10-30T21:15:10.013 に答える