1

grep コマンドは次のとおりです。

grep "%SWFPATH%/plugins/" filename 

そしてその出力:

set(hotspot[hs_bg_%2].url,%SWFPATH%/plugins/textfield.swf);
set(hotspot[hs_%2].url,%SWFPATH%/plugins/textfield.swf);
url="%SWFPATH%/plugins/textfield.swf"
url="%SWFPATH%/plugins/scrollarea.swf"
alturl="%SWFPATH%/plugins/scrollarea.js"
url="%SWFPATH%/plugins/textfield.swf"

特定のファイルで言及されている「plugins/」ディレクトリ内のすべてのファイルの名前を含むファイルを生成したいと思います。

基本的に、すべての行からファイル名と拡張子を抽出する必要があります。重複を削除することはできますが、必要な情報を抽出する方法がわかりません。

これは、取得したいファイルの内容になります。

textfield.swf
scrollarea.swf
strollarea.js

ありがとう!!!

PS: スレッド「bash でファイル名と拡張子を抽出する (14 回答)」では、「変数」からファイル名と拡張子を取得する方法が説明されています。私が達成しようとしているのは、これらを「ファイル」から抽出することですが、これはまったく異なります」

4

3 に答える 3

2

awk の使用:

grep "%SWFPATH%/plugins/" filename | \
awk '{ match($0, /plugins\/([^\/[:space:]]+)\.([[:alnum:]]+)/,submatch);
     print "filename:"submatch[1];
     print "extension:"submatch[2];
    }'

いくつかの説明:

match関数はawk( で示される) によって処理されたすべての行$0を取得し、その正規表現に一致するものを探します。サブマッチ (括弧内の正規表現の部分と一致する文字列の部分) は、配列に保存されsubmatchます。print見た目と同じくらい簡単で、印刷するだけです。

于 2013-06-06T17:04:41.527 に答える
1

awkファイル名を単純に抽出sedし、末尾の )"; 文字をクリーンアップするために使用します。

 awk -F/ '{print $NF}' a  | sed -e 's/);//' -e 's/"$//'
于 2013-06-06T17:08:04.793 に答える
1

この特定の問題について

awk '/\/plugins\// {sub(/.*\//, ""); sub(/(\);|")?$/, "");
   arr[$0] = $0} END {for (i in arr) print arr[i]}' filename
于 2013-06-06T17:05:07.423 に答える