Редактирование/Замена содержимого в нескольких файлах в Unix AIX без его открытия

У меня есть несколько файлов в каталоге 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

Я хочу заменить 10022012_0630 на файлы EnvName.Fullbkp.schema_121212_1212_Part *.expd с 22052013_1000 без активации этих файлов. Изменения должны происходить во всех файлах EnvName.Fullbkp.schema_121212_1212_Part *.expdp в каталоге за раз

Ответы

Ответ 1

Предполагая, что вы не хотите вручную открывать файлы:

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

update:, поскольку переключатель "-i" недоступен в AIX, но при условии, что у вас есть ksh (или совместимая оболочка):

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

Теперь измененные файлы будут находиться в каталоге modified.

Ответ 2

Это какой-то экстремальный оптимист, который предлагает sed -i в AIX.

Немного более вероятно, что будет установлен perl.

perl -pi -e 's/10022012_0630/22052013_1000/' EnvName.Fullbkp.schema_121212_1212_Part*.expd

Если нет perl, тогда вам просто нужно сделать это как настоящий человек:

for i in EnvName.Fullbkp.schema_121212_1212_Part*.expd
do
  ed -s "$i" <<'__EOF'
1,$s/10022012_0630/22052013_1000/g
wq
__EOF
done

У вас есть резервные копии, прежде чем пытаться их выполнить.