查找和文件與腳本
回答
由於您標記了「bash」這個問題,我假定您並未試圖使用XML庫(儘管我認爲XML專家可能會給您類似於XSLT處理器命令的東西,可以很好地解決此問題強大),但你只是在做搜索&替換命令行感興趣。
我用perl此:
perl -pi -e 's#VALUE#replacement#g' *.xml
見perlrun
手冊頁:很快的說,-p
開關的Perl成文字處理模式,-i
代表「就地」,並-e
使你可以指定一個適用於所有輸入行的表達式。
還要注意(如果你不是太熟悉的話),你可以使用其它字符比#
(常見的有%
,逗號等),不與你的搜索&替換字符串衝突。
有一個小告誡:perl的將讀取&寫在命令行給出的所有文件,甚至是那些沒有改變。因此,文件'修改時間即使沒有更改也會更新。 (我通常用一些更多的shell魔法來解決這個問題,例如使用grep -l
或grin -l
來選擇perl文件。
編輯:如果我正確理解你的評論,還需要幫助使用正則表達式來應用。請允許我簡要建議是這樣的,那麼:
perl -pi -e 's,(name="NAME" value=)"[^"]*",\1"NEWVALUE",g' *.xml
我不知道VALUE,它是一個字符串,在我的帖子中用「VALUE」取代。而且,我必須按名稱過濾。 –
如果你知道name =總是在value =之前出現,那麼只需要在上面的命令中擴展正則表達式即可。如果你不這樣做,我會用「xml」來標記問題,並使用適當的XML工具來完成這項工作。 –
是的名字總是在值之前出現;) –
相關:bash XHTML parsing using xpath
您可以使用SED:
SED 's/\(<test name=\"NAME\"\) value=\"VALUE\"/\1 value=\"YourValue\"/' test.xml
其中的test.xml是包含給定節點的XML文檔。這非常脆弱,如果您需要多次進行替換,您可以努力使其更加靈活。例如,當前語句區分大小寫,因此它不會替換name =「name」節點上的值,但可以在語句末尾添加不區分大小寫的標誌,如下所示:
('s/\(<test name=\"NAME\"\) value=\"VALUE\"/\1 value=\"YourValue\"/I')
。
另一個選擇是使用XSLT,但它會要求你下載一個外部庫。它非常靈活,對於更復雜的XML文檔修改可能是一個可行的選擇。
- 1. CMD腳本查找和文件
- 2. VBS腳本查找和刪除文件
- 3. bash腳本查找文件
- 4. 文件腳本查找版本
- 5. SSIS查找與查找組件Vs的腳本組件
- 6. 在html文件中查找JavaScript腳本
- 7. bash腳本查找文件夾中
- 8. Shell腳本查找無主文件
- 9. 批處理腳本查找文件
- 10. 查找jQuery腳本文件ASP hiddenfield
- 11. 查找-exec和bash腳本
- 12. 查找和shell腳本
- 13. 查找和替換腳本
- 14. Shell腳本查找文本文件中的文本
- 15. 幫助shell腳本根據條件查找和移動文件
- 16. 文本如何查找文件與
- 17. 查找文本與文件名
- 18. Shell腳本找到JPG和MOV文件
- 19. 查找和文本
- 20. 查找和文本
- 21. 的Perl:查找和mulitiple文本文件
- 22. 查找和文本文件替換
- 23. 查找和閱讀文本文件
- 24. 使用python腳本查找和刪除文件
- 25. PowerShell腳本查找擴展名爲.xls和.xlsx的Excel文件
- 26. 使用Python腳本查找和重命名文件
- 27. 用於查找和移動文件的Python腳本
- 28. VB腳本查找和替換Word文檔中的文本
- 29. 腳本找不到文件
- 30. 在批處理腳本中查找未知文本文件
您是否想用VALUE取代VALUE? –
'sed -i'〜VALUE〜foo〜g'文件。xml' –
值是一個隨機值,例如我設置了VALUE,但它是一個字符串,並且必須由其他字符串替換。 –