için içinde bir $ VARIABLE bir "sed" komutu Ben bu satırları olan bir dosya:: döngü
s17 line linewidth 2.0
s18 line linewidth 2.0
.
.
.
s28 line linewidth 2.0
:
s17 line linewidth 1.0
s18 line linewidth 1.0
.
.
.
s28 line linewidth 1.0
Ben bu satırları değiştirmek istiyorum bash change.sh > changed.txt
yaparak
#!/bin/bash
for VARIABLE in {17..28}
do
sed 's/s${VARIABLE} line linewidth 1\.0/s${VARIABLE} line linewidth 2\.0/g' ./band-structure-calcite.agr
done
Sonra kod çalıştırmasına ancak dosya changed.txt
devam etmez:
ben bash bu kodu yazdım Bu değişiklikler.
senin sayılarla normal bir ifade yapın bash
Tek tırnakçıklar değişkenleri yorumlamıyor, çift tırnak işareti var. – choroba
'sed' N kere çalıştırmak verimsizdir ve size çok sayıda yinelenen çıktı satırı verecektir (her satırın N kopyaları, her kopyadaki * bir * ile uygun şekilde değiştirilmiş). Eğer bu sayılarla (ve muhtemelen başkaları değil) eşleşen hatlarda '' ''' '' '' i değiştirmek istiyorsanız, bunu yapmanın daha iyi yolları vardır. –
@choroba: Komutu şu şekilde değiştirdim: "sed" s/s $ {VARIABLE} satır çizgisi 1 \ .0/s $ {VARIABLE} satır çizgisi 2 \ .0/g "./band-structure-calcite. agr 've işe yaramıyor –