2014-06-11 31 views
-2

我們正在修改某些配置文件的預期格式,我想創建一個腳本來將舊格式的文件轉換爲新格式。然而,我的腳本編寫技巧很生疏,我必須很少編寫腳本,以至於我再次需要腳本工具。我正在尋找關於如何執行這些腳本的建議。我最複雜的變化將被修改INI文件,目前將有multuple線看起來像這樣的:修改配置文件的腳本工具

device.name = XXX

我想將名稱更改爲一個標籤,然後追加東西這個名字讓它變得獨一無二。具體來說,在這種情況下,我可能會使用該文件中找到的文件夾的名稱,因此,如果該文件夾中的YY我會改變上面:

device.label = xxx 
device.name = xxx_YY 

兩者的順序並不重要。多個device.name值將存在於每個文件中,並且全部都必須更新。

我想知道哪種工具最適合解決這個問題。這是簡單的在bash腳本中完成的,或者我應該看看python。如果這是在我所傾向的bash中完成的,有人可以給我一個想法,我應該使用哪種bash工具。我認爲我可以讓sed或awk做到這一點,但我還沒有弄清楚現在的情況。如果需要的話,我可以制定出確切的語法(儘管歡迎使用語法!),但是對於這項工作的好工具的指針將不勝感激。

回答

0

這已經同樣問過.... Duplicate

import configparser 
filename = r'C:\directory\sub_directory\FILE.INI' 
config = configparser.ConfigParser() 
config.read(filename) 
config['device.label'] = config['device.name'] 
modified_name = str(config['device.name']) + '_' + filename.split['\\'][2] 
config['device.name'] = modified_name 

with open(filename, 'w') as configfile: 
    config.write(configfile) 

將產生:

device.label = xxx 
device.name = xxx_subdirectory 

這將需要進行修改,如果說,你在你的文件中有專門的章節。

0

這正是awk發明要做的最好的類型。如果沒有更多的樣本輸入,很難說,但是像這樣的東西聽起來像你需要的東西:

awk -v dir="$(basename "$PWD")" '{lbl=$0; sub(/name/,"label",lbl); print lbl RS $0 "_" dir}' file