我在項目中有幾十個文件,我想將所有發生的six.b("...")
更改爲b"..."
。我可以用某種正則表達式bash腳本來做到這一點嗎?從多個文件中刪除six.b
0
A
回答
1
它完全有可能在Python,但我首先讓我的項目樹的備份,然後:
import re
import os
indir = 'files'
for root, dirs, files in os.walk(indir):
for f in files:
fname = os.path.join(root, f)
with open(fname) as f:
txt = f.read()
txt = re.sub(r'six\.(b\("[^"]*"\))', r'\1', txt)
with open(fname, 'w') as f:
f.write(txt)
print(fname)
+0
是不是要保留括號,把'six.b(「asdf」)'變成'b(「asdf」)'?我認爲它也給出了帶有轉義引號的字符串的錯誤輸出,例如'six.b(「asdf \」)「)',它也不處理引號或三引號,但至少它不會處理'不要觸摸那些產生損壞的輸出。 – user2357112
+0
對代碼應用修復 – ArekBulski
1
一個相對簡單的bash溶液(變化*包含.foo爲*的.py或任何文件名模式適合您的情況):
#!/bin/bash
export FILES=`find . -type f -name '*.foo' -exec egrep -l 'six\.b\("[^\"]*"\)' {} \; 2>/dev/null`
for file in $FILES
do
cp $file $file.bak
sed 's/six\.b(\(\"[^\"]*[^\\]\"\))/b\1/' $file.bak > $file
echo $file
done
注:
它只會consid ER /修改匹配模式的文件
它將使每一個「.bak的」複製文件,它會修改
它不會處理嵌入
\")
,例如six.b("asdf\")")
,但我不知道這個問題有一個簡單的解決方案,不知道更多關於你正在操作的文件。six.b("")
的結尾是否保證是最後的")
就行了?等等。
相關問題
- 1. 從文件中刪除多個BOM
- 2. 從NSDirectory中刪除多個文件
- 3. 從文本文件中刪除多行
- 4. 從git刪除多個文件
- 5. 使用sed從文本文件中刪除多個文件名
- 6. 刪除多個文件
- 7. Python - 刪除多個文件
- 8. 從文件夾中刪除多個文件
- 9. Bash:從文件列表中刪除多個文件
- 10. 從Linux中的多個文件中刪除文本行
- 11. 從PowerShell中的多個文本文件中刪除行
- 12. 將代碼插入多個文件?從多個文件中刪除?
- 13. 刪除多個文件中的行
- 14. 從文本文件中刪除多個字符使用C
- 15. 如何從輸入類型=「文件」中刪除一個,兩個文件多個?
- 16. 從文件中刪除
- 17. 從TortoiseHG中刪除文件
- 18. 從文件中刪除行
- 19. PHP從文件中刪除
- 20. 從文件中刪除行
- 21. 從Bazaar中刪除文件
- 22. 從URL中刪除文件
- 23. 如何從html輸入類型文件中刪除單個文件多個?
- 24. 從文件中刪除第一個多行註釋
- 25. 從多個.txt文件中刪除最後6行
- 26. 如何從多個JSON文件中刪除重複內容?
- 27. sed幫助從多個文件中刪除malwarm代碼
- 28. 如何從MySQL數據庫中刪除多個文件
- 29. 從多個文件中刪除字符串
- 30. 使用powershell從文件中刪除多個字符串
你有沒有發生不應該改變的'six.b'?例如'six.begin'等。您將其標記爲Python,您是否也可以使用Python解決方案? –