2016-03-24 13 views
3

Dosyalarda satırları değiştiren bir komut dosyası var. Hangi iyi çalışıyordu, ama bundan dolayı, dosyalar salt okunur olacak. Wq için wq değiştirmeyi denedim! (VI’da yaptığım gibi) ama bunun hiç bir etkisi yok. Ayrıca hiçbir şey yapmadı "zz" de denedim.Yalnızca okuma yazımlı dosyaları düzenlemek ve zorlamak için komut dosyama ihtiyacım var

Herhangi bir yardım için minnettarım; teşekkür ederim.

debug=false 

## *****Put file name in quotes****** 
declare -a arr=("UF19905217" "UG19905218") 

##Put date in DDMMYYYY format for the date the message was original processed. 
DATE="25082015" 

## now loop through the above array 
for i in "${arr[@]}" 
do 
    #if "$debug; then 
     echo "Fix file named: Inbound_$i.msg" 
     MSG="Inbound_$i.msg" 
    #fi 

    if [ ! -d "$MSG" ]; then 
    # Enter what you would like changed here. You can copy and paste this command for multiple changes 

     #DATATYPE 
     printf "%s\n" ',s/<DataType>EDI<\/DataType>/<DataType>830<\/DataType>/g' wq | ed -s /data1/Inbound/$DATE/$MSG   

     echo "Complete" 
    else 
      echo "Message not found or errored!" 
    fi 

done 
+0

Kullanım 'chmod' önce (ve sonrası) bunları düzenlemeniz gerekir dosya izinlerini değiştirmek için bkz emir komuta açıklaması için

? –

+1

Herhangi bir nedenle "sed" kullanmıyor musunuz? – tripleee

+0

Bunun yerine tekrar tekrar makineye okunabilir sıralanabilir tarih formatı YYYYMMDD'ye geçmek için kendinize teşekkür edersiniz. – tripleee

cevap

0

Dosyayı içeren dizine yazma erişiminiz varsa, bunları yeniden yazmadan önce silebilirsiniz. Eğer GNU sed'e erişiminiz varsa, sed -i'un yapacağı şey budur.

Ben ed aşina değilim ama şu sed komutu komutunun yapacağını düşünüyorum: Dosyanın sahibi değilseniz, Ayrıca

sed -i 's/<DataType>EDI<\/DataType>/<DataType>830<\/DataType>/g' /data1/Inbound/$DATE/$MSG 

, dizin olmamalıdır Yapışkan biti ayarlayınız veya dosyayı silemeyeceksiniz. kullanmak sonra

" Allow saving of files as sudo when I forgot to start vim using sudo. 
cmap w!! w !sudo tee > /dev/null % 

Ve:

+0

Merhaba, Aaron. Yapabilirdim, ama sorun şu ki tüm dosyalar artık salt okunur olacak. İhtiyacım olan şey, sadece okunabilseler bile yazmaya zorlayabilecek bir çözüm. Yine de öneriyi takdir ediyorum. – FrankCapone

+0

Başlığınızı düzeltmelisiniz (kuvvet yazmasından ziyade zorlamadan bahsedin) ve sorunuzda biraz daha açıklayıcı olabilirsiniz. Dosyaları okuyarak, silerek ve yeniden yazarak salt okunur kısıtlamaya gelebileceğinizi düşünüyorum, bu çözümü doğrularsam cevabımı güncelleyeceğim. – Aaron

+0

Yup işe yarıyor ve bir adımda sed ile bitiyor. – Aaron

İlgili konular