0

Unix ディレクトリに複数のファイルがあります。ファイル名は以下の通りです。
EnvName.Fullbkp.schema_121212_1212_Part1.expd EnvName.Fullbkp.schema_121212_1212_Part2.expd EnvName.Fullbkp.schema_121212_1212_Part3.expd

上記の各ファイルには、以下のような共通の行があります。例えば

EnvName.Fullbkp.schema_121212_1212_Part1.expd

以下のデータがあります

Log=EnvName.Fullbkp.schema_10022012_0630_Part1.log  
file=EnvName.Fullbkp.schema_10022012_0630_Part1.lst  

EnvName.Fullbkp.schema_121212_1212_Part2.expd

以下のデータがあります

Log=EnvName.Fullbkp.schema_10022012_0630_Part2.log  
file=EnvName.Fullbkp.schema_10022012_0630_Part2.lst

EnvName.Fullbkp.schema_121212_1212_Part*.expd ファイルの10022012_0630を、実際にそれらのファイルを開かずに 22052013_1000に置き換えたい。一度にディレクトリ内のすべての EnvName.Fullbkp.schema_121212_1212_Part*.expdp ファイルで変更が発生する必要があります

4

2 に答える 2

0

ファイルを手動で開きたくないという意味であると仮定します。

sed -i 's/10022012_0630/22052013_1000/' filename*.log

更新:「-i」スイッチはAIXでは使用できないため、ksh(または互換性のあるシェル)があると仮定します:

mkdir modified
for file in filename*.log; do
    sed 's/10022012_0630/22052013_1000/' "$file" > modified/"$file"
done

これで、変更されたファイルがmodifiedディレクトリに配置されます。

于 2013-05-28T14:36:15.770 に答える