3

私はfiles.txtにファイルのリストを持っています。これは非常に単純化された例です

$FOO%foo\bar\biz.asmx
%FOO%foo\bar\biz.cs
%FOO%baz\bar\foo\biz.asmx

次のようなファイルApp_Codeのパスに挿入するのが私の望みです:.asmx

$FOO%foo\bar\App_code\biz.asmx
%FOO%foo\bar\biz.cs
%FOO%baz\bar\foo\App_Code\biz.asmx

私はWindowsボックスを使用していますが、sed/awk/grepやその他の派手なものを提供するgnuwin32があります。

私は特定のソリューションに固執していませんが、啓発のための sed/awk ルートに興味があります

私は試してみました: sed "s/\\([:alnum:]*)\.asmx/App_Code\/{1}/" これは、パス区切り文字 (ファイル名) の後に.asmx. 私が欲しいものが見つからないので、何かがずれています。私はドキュメントと例に苦労しています。アドバイスとガイダンスをいただければ幸いです。

4

3 に答える 3

2

Windows での引用は面倒なので、次のスクリプトを というファイルに入れますappcode.awk

BEGIN {
    FS=OFS="\\"
}
$NF~/[.]asmx/{
    $NF = "App_code" OFS $NF
}
{
    print
}

そして次のように実行します:

$ awk -f appcode.awk file
$FOO%foo\bar\App_code\biz.asmx
%FOO%foo\bar\biz.cs
%FOO%baz\bar\foo\App_code\biz.asmx
于 2013-10-08T18:59:58.010 に答える
1

使用するawk

awk -F\\ '/\.asmx/ {$NF="App_Code\\"$NF}1' OFS=\\ file
$FOO%foo\bar\App_Code\biz.asmx
%FOO%foo\bar\biz.cs
%FOO%baz\bar\foo\App_Code\biz.asmx
于 2013-10-08T19:00:16.643 に答える
1

使用sed:

sed -r 's/(\\\w+\.asmx)/\\App_Code\1/' files.txt

出力:

$FOO%foo\bar\App_Code\biz.asmx
%FOO%foo\bar\biz.cs
%FOO%baz\bar\foo\App_Code\biz.asmx

編集

sudo_Oで提案されているように、キャプチャ グループを削除&して、同じコマンドで使用できます。

sed -r 's/\\\w+\.asmx/\\App_Code&/' files.txt
于 2013-10-08T19:00:34.733 に答える